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

Gop*_*pal 1 vb6

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

LoadDetails grid1

Sub LoadDetails(grid1 as string)
    Dim a as control
    a = grid1
    ...
Run Code Online (Sandbox Code Playgroud)

上面的代码显示错误为

对象变量或未设置块变量

如何解决这个问题呢。

需要 vb6 代码帮助

Cod*_*r14 5

您正在尝试将字符串 (grid1) 分配给控件 (a)。如果可以,请传递控件本身而不是控件的名称:

LoadDetails grid1 'grid1 is here of type Control

Sub LoadDetails(a as Control)
    ...
Run Code Online (Sandbox Code Playgroud)

grid1 现在是控件而不是控件的名称。您将需要更改之前的代码LoadDetails grid1。如果您知道控件的类型,那就更好了。例如,如果控件是 MSFlexGrid,则可以使用以下命令:

LoadDetails grid1 'grid1 is a MSFLexGrid

Sub LoadDetails(a as MSFlexGrid)
    'Do stuff with the grid
Run Code Online (Sandbox Code Playgroud)

如果无法传递控件本身,则可以使用此方法查找具有给定名称的控件:

Me.Controls(sName)    
Run Code Online (Sandbox Code Playgroud)

(感谢 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)
    ...
Run Code Online (Sandbox Code Playgroud)

  • 我认为他们也可以使用`Me.Controls(sName)`。 (2认同)