如何将控件名称传递给子过程

时间:2013-04-11 12:20:53

标签: vb6

我想将控件名称传递给子过程。

LoadDetails grid1

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

以上代码显示错误为

  

对象变量或未设置块变量

如何解决这个问题。

需要vb6代码帮助

2 个答案:

答案 0 :(得分:4)

您正在尝试将字符串(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)
    ...

答案 1 :(得分:2)

您的参数不正确。您应该像这样更改它(使用文本框控件的示例)。

Private Sub HighlightText(ByRef txtBox As TextBox)

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

End Sub

代码示例将突出显示文本框控件的内容。但重要的是,您可以将参数声明为控件类型,然后直接在子中使用它。