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

Vb6 如何将控件名称传递给子过程,vb6,Vb6,我想将控件名传递给子过程 LoadDetails grid1 Sub LoadDetails(grid1 as string) Dim a as control a = grid1 ... 上面的代码将错误显示为 对象变量或未设置块变量 如何解决这个问题 需要vb6代码帮助您正在尝试将字符串(grid1)分配给控件(a)。 如果可以,请传递控件本身,而不是控件的名称: LoadDetails grid1 'grid1 is here of type Control

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

LoadDetails grid1

Sub LoadDetails(grid1 as string)
    Dim a as control
    a = grid1
    ...
上面的代码将错误显示为


对象变量或未设置块变量

如何解决这个问题


需要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)
    ...

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

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


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

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


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

您遇到了什么错误?对象变量或块变量未设置您当前的代码失败,因为您试图将字符串分配给对象引用。只能使用“Set”来设置对象引用,“Set”语句的右侧必须计算为兼容对象类型的对象。如果你向我们透露你想做什么,这会有所帮助。@Gopal仍然在添加“需要vb6代码帮助”。。正如我在《纽约时报》上所说,这是不必要的。它隐含在标记和您正在提问的事实中。您得到了什么错误?object variable或with block variable not Set当前代码失败,因为您试图将字符串分配给对象引用。只能使用“Set”来设置对象引用,“Set”语句的右侧必须计算为兼容对象类型的对象。如果你向我们透露你想做什么,这会有所帮助。@Gopal仍然在添加“需要vb6代码帮助”。。正如我在《纽约时报》上所说,这是不必要的。标签和你正在问问题的事实都暗示了这一点。他们也可以使用
Me.Controls(sName)
我想。他们也可以使用
Me.Controls(sName)
我想。