1

サブプロシージャにコントロール名を渡したい。

LoadDetails grid1

Sub LoadDetails(grid1 as string)
    Dim a as control
    a = grid1
    ...

上記のコードはエラーを表示しています

オブジェクト変数またはWithブロック変数が設定されていません

この問題を解決する方法。

vb6 コードのヘルプが必要

4

2 に答える 2

5

文字列 (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)
    ...
于 2013-04-11T12:39:47.273 に答える
2

パラメータが正しくありません。次のように変更する必要があります (テキスト ボックス コントロールの例)。

Private Sub HighlightText(ByRef txtBox As TextBox)

    txtBox.SelStart = 0
    txtBox.SelLength = Len(txtBox.Text)

End Sub

コード例は、テキスト ボックス コントロールの内容を強調表示します。ただし、重要な点は、パラメーターをコントロールの型として宣言し、サブルーチン内で直接使用できることです。

于 2013-04-11T12:40:38.940 に答える