• 締切済み

効率の良いテキストボックスの検知について

VB6の初心者です。質問させていただきます。 画面上に5つのテキストボックス(TEXT1、TEXT2、TEXT3、TEXT4、TEXT5)と 1つのコマンドボタン(Cmd_SAVE)があり、 画面上の5つのテキストボックスをすべて記入し、 コマンドボタンを押すと、登録確認のメッセージボックスが表示され、 OKボタンを押すと、サーバへ転送され、 画面上のテキストボックスにひとつでも空欄があると、どのテキストボックスが 空欄であるかを示すメッセージが表示される処理をさせています。 そこで質問なのですが、今、メッセージボックス、登録処理は出来るようになったのですが、 とても処理の効率が悪い、もっと空欄を確認するのにすっきりとしたコードはある、と知り合いに言われました。 おそらく、繰り返し等を用いると思うのですが、メッセージにそれぞれのオブジェクト名を代入するやり方がわかりません。 下記が今のコーディングです。 Private Sub Cmd_SAVE_Click()   If TEXT1.Text = "" Then      MsgBox "TEXT1が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT2.Text = "" Then      MsgBox "TEXT2が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT3.Text = "" Then      MsgBox "TEXT3が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT4.Text = "" Then      MsgBox "TEXT4が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT5.Text = "" Then       MsgBox "TEXT5が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If MsgBox("入力データを登録しますか?", vbOKCancel, "登録確認") = vbCancel Then     Exit Sub   End If   End If ~登録処理~ End Sub どのような書き方がきれいで、効率的なコーディングなのでしょうか? ご教示お願いします!

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

同種コントロールをコピーして作成する方法を取り、コントロール配列という仕組みを使うと、配列を要素の添え字を変えることで繰り回しができる。それを使えということだと思う。Googleで「コントロール配列 VB」で照会のこと。沢山記事がある。ただしVB.NETとの関連の記事が多いかもしてないので、飛ばすこと。 参考例 http://www.cs.t-kougei.ac.jp/hif/lecture/program-bas-04/C/cont-hai.html

すると、全ての回答が全文表示されます。
  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

5つのTextBoxをコントロール配列にしておいて、 '----------------------------------------------- Private Sub Cmd_SAVE_Click()   Dim i As Integer  For i = 0 To 4    If Text1(i) = "" Then      MsgBox (i + 1) & " 番目のTEXTBOXが未入力です"      Text1(i).SetFocus  '●未入力のTEXTBOXへ      Exit Sub    End If  Next i  If MsgBox("入力データを登録しますか?", vbOKCancel, "登録確認") = vbCancel Then    Exit Sub  End If   ~~ 登録処理 ~~ End Sub '--------------------------------------------- 未入力のTEXTBOXが複数あった場合の処理も必要かな、と。 またエラー表示についていえば、 TEXTBOXと対のLabelに項目が表示されてるでしょうから 未入力の場合はその項目を表示してあげる方が親切だと思いますが。 以上です。  

すると、全ての回答が全文表示されます。
  • kazu1973
  • ベストアンサー率40% (14/35)
回答No.1

私がよく使う手法です。 これがあってると言う物ではないですので参考までに Private Sub Cmd_SAVE_Click()  Dim idx as Integer for idx=0 to controls.count - 1 if typeof controls(idx) is textbox then If controls(idx).Text = "" Then    MsgBox controls(idx).name & "が登録されていません", vbOKOnly, "警告"    Exit Sub   End If  End If next idx   If MsgBox("入力データを登録しますか?", vbOKCancel, "登録確認") = vbCancel Then     Exit Sub   End If   End If ~登録処理~ End Sub

すると、全ての回答が全文表示されます。

関連するQ&A