フォーム内のコントロールを名前で探して取得する
スポンサーリンク
VB6 では、フォームの Controls に名前を指定することができます。
サンプルコード
以下にサンプルコードを示します。
VB6.0 以前
' エラーをトラップしない On Error Resume Next ' 現在のフォーム内から、Text1 という名前のコントロールを探す Dim cControl As Control Set cControl = Me.Controls("Text1") ' エラー処理を通常のロジックに戻す On Error GoTo 0 ' 見つかった場合は Text プロパティを表示する If Not cControl Is Nothing Then If TypeOf cControl Is TextBox Then Dim cTextBox As TextBox Set cTextBox = cControl Call MsgBox(cTextBox.Text) End If End If
ただし、この方法では見つからなかった場合にエラーとなり、エラー処理を実装するのはちょっと面倒です。以下のようなメソッドを組んだ方が親切と言えるでしょう。
VB6.0 以前
' -------------------------------------------------------------------------------------- ' 指定したコントロール内に含まれるコントロールを指定した名前で検索します。 ' ' @Param cForm 検索対象となるフォーム。 ' @Param stName 検索するコントロールの名前。 ' @Return 取得したコントロールのインスタンス。取得できなかった場合は Nothing。 ' -------------------------------------------------------------------------------------- Public Function FindControl(ByVal cForm As Form, ByVal stName As String) As Control Dim cControl As Control ' cForm 内のすべてのコントロールを列挙する For Each cControl In cForm.Controls ' コントロール名が合致した場合はそのコントロールのインスタンスを返す If cControl.Name = stName Then Set FindControl = cControl Exit For End If Next cControl End Function
使用例は以下のようになります。
VB6.0 以前
' 現在のフォーム内から、Text1 という名前のコントロールを探す Dim cFindControl As Control Set cFindControl = FindControl(Me, "Text1") ' 見つかった場合は Text プロパティを表示する If Not cFindControl Is Nothing Then If TypeOf cFindControl Is TextBox Then Dim cTextBox As TextBox Set cTextBox = cFindControl Call MsgBox(cTextBox.Text) End If End If
関連するリファレンス
準備中です。