サブプロシージャにコントロール名を渡したい。
LoadDetails grid1
Sub LoadDetails(grid1 as string)
Dim a as control
a = grid1
...
上記のコードはエラーを表示しています
オブジェクト変数またはWithブロック変数が設定されていません
この問題を解決する方法。
vb6 コードのヘルプが必要
サブプロシージャにコントロール名を渡したい。
LoadDetails grid1
Sub LoadDetails(grid1 as string)
Dim a as control
a = grid1
...
上記のコードはエラーを表示しています
オブジェクト変数またはWithブロック変数が設定されていません
この問題を解決する方法。
vb6 コードのヘルプが必要
文字列 (grid1) をコントロール (a) に割り当てようとしています。可能であれば、コントロールの名前の代わりにコントロール自体を渡します。
LoadDetails grid1 'grid1 is here of type Control
Sub LoadDetails(a as Control)
...
grid1 は、コントロールの名前ではなくコントロールになりました。の前にコードを変更する必要がありますLoadDetails grid1
。コントロールのタイプを知っていれば、さらに良いでしょう。たとえば、コントロールが MSFlexGrid の場合、これを使用できます。
LoadDetails grid1 'grid1 is a MSFLexGrid
Sub LoadDetails(a as MSFlexGrid)
'Do stuff with the grid
コントロール自体を渡すことができない場合は、このメソッドを使用して、指定された名前のコントロールを見つけることができます。
Me.Controls(sName)
(この関数を教えてくれた Deanna に感謝します)
あなたのコードで:
LoadDetails grid1 'grid1 is here a string, like in your original code
Sub LoadDetails(grid1 as string)
Dim a as control
a = Me.Controls(grid1)
...
パラメータが正しくありません。次のように変更する必要があります (テキスト ボックス コントロールの例)。
Private Sub HighlightText(ByRef txtBox As TextBox)
txtBox.SelStart = 0
txtBox.SelLength = Len(txtBox.Text)
End Sub
コード例は、テキスト ボックス コントロールの内容を強調表示します。ただし、重要な点は、パラメーターをコントロールの型として宣言し、サブルーチン内で直接使用できることです。