我可以使用哪些VBA对象作为参考?

我可以使用哪些VBA对象作为参考?,vba,object,Vba,Object,对于创建对象变量的基本函数,我可以引用出现在userform中的哪些类型的对象 例如,我知道 Dim button As CommandButton Set button = CommandButton1 button.Caption = "Text I can change for this object." 将运行并更改CommanButton1的属性。由于不匹配错误,这似乎不适用于userforms中的标签或文本框。是否有一个以这种方式可用的对象列表,以及是否有一

对于创建对象变量的基本函数,我可以引用出现在userform中的哪些类型的对象

例如,我知道

    Dim button As CommandButton
    Set button = CommandButton1
    button.Caption = "Text I can change for this object."

将运行并更改CommanButton1的属性。由于不匹配错误,这似乎不适用于userforms中的标签或文本框。是否有一个以这种方式可用的对象列表,以及是否有一种方法可以将这样的标签或文本框用于数组?

因为您在注释中指出,您正在按类型查找数组,用于用户表单。。。下面是一个适用于标签的示例草稿(
MsForms.Label
)。它仍然在所有控件之间循环,但是一旦创建了数组,您就可以自由地使用它了

Option Explicit
Private labels() As MSForms.label

Private Sub PopulateLabelArray()
    Dim ctrl As Control
    Dim count As Long
    Dim lbl As Variant
    For Each ctrl In Me.Controls
        If TypeOf ctrl Is MSForms.label Then
        count = count + 1
        End If
    Next
    ReDim labels(1 To count)
    count = 0
    For Each ctrl In Me.Controls
        If TypeOf ctrl Is MSForms.label Then
            count = count + 1
            Set labels(count) = ctrl
        End If
    Next
End Sub

Private Sub UserForm_Initialize()
    Dim lbl As variant
    'Populate the label array.
    PopulateLabelArray
    'Test the array
    For Each lbl In labels()
    Debug.Print lbl.Caption
    Next
End Sub

我相信这可以改进,但这是功能性的。

尝试对文本框使用value属性(我认为)。“对数组使用这样的标签或文本框”是什么意思?你能说得更清楚一点吗?你可能需要在你要做的事情周围添加更多的上下文
Me.CommandButton1.Caption=“blah”
是更简单的方法。或者
Me.Controls(“CommandButton1”).Caption
如果使用后者,那么只要命名控件具有
Caption
属性,它就应该工作。理想情况下,我希望在用户表单中有一个标签数组,我可以访问。我见过在一个页面中通过每个控件的循环,但我更希望为我自己的数组中的每个对象都有一个引用。这就是我需要的!多谢。运行它时出现了一个小错误,UserForm_Initialize下的lbl需要是类型变量。否则这对我的标签和文本框有效,谢谢。有趣的是,我在测试时发现了这个错误,修复了它,然后仍然给你错误。哎呀。很高兴它能按你的要求工作。