我试图通过使用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
它会抛出错误" TYPE MISMATCH"在" CallByName **theobj_str**...
"
CallByName将一个对象作为其第一个参数。我需要以某种方式转换字符串" theobj_str"成对象。我怎么能这样做?
如果我将其称为CallByName Images2, "Visible", vbLet,False
由于
答案 0 :(得分:1)
如果您不需要使用CallByName,您可以遍历控件集合并检查类型。如果类型与您要隐藏的控件匹配,那么您可以通过这种方式设置它的可见属性。
代码如下所示:
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循环中更改计数。
希望有所帮助。