使用字符串作为参数的callbyname vb6

使用字符串作为参数的callbyname vb6,vb6,callbyname,Vb6,Callbyname,我试图通过使用CallByName和通过对象的循环将一些图像的可见性设置为false 这是密码 Private Sub command1Click dim theobj_str as string dim ctr as integer for ctr = 1 to 3 theobj_str = "Images" & ctr CallByName theobj_str, "Visible", vbLet,False end for END SUB 它在“CallByName*

我试图通过使用CallByName和通过对象的循环将一些图像的可见性设置为false

这是密码

Private Sub command1Click
dim theobj_str as string
dim ctr as integer
for ctr = 1 to 3
   theobj_str = "Images" & ctr
   CallByName theobj_str, "Visible", vbLet,False
end for
END SUB
它在“
CallByName**theobj\u str**…”
上抛出错误“类型不匹配”

CallByName将对象作为其第一个参数。我需要将字符串“theobj_str”转换成一个对象。我该怎么做

CallByName可以很好地工作,如果我这样称呼它:
CallByName Images2,“Visible”,vbLet,False


谢谢

如果您不需要使用CallByName,您可以在controls集合中循环并检查类型。如果类型与要隐藏的控件匹配,则可以通过这种方式设置其visible属性

代码如下所示:

Private Sub Command_Click()

    SetControlVisibility "Image", False

End Sub

Private Sub SetControlVisibility(ByVal controlType As String, ByVal visibleValue As Boolean)
Dim ctrl As Control

    For Each ctrl In Me.Controls
        If TypeName(ctrl) = controlType Then
            ctrl.Visible = visibleValue
        End If
    Next

End Sub
这样做将允许您向表单添加更多图像控件,而无需记住更改for循环中的计数


希望对您有所帮助。

CallByName
需要一个对象(如表单、类等)作为第一个参数,第一个参数不能是字符串
CallByName
允许您使用字符串值间接访问对象的属性和方法(基本上是后期绑定)。如果您的对象是一个表单,您可以首先通过按表单名称搜索表单集合来查找表单,然后使用表单引用作为
CallByName
参数。我想我走到了死胡同。我会找到一个新的方法的。谢谢马克。可能是重复的