Excel VBA - 获取用户窗体标签标题的值 属性

Excel VBA - Get the values of UserForm Label Caption Property

我有一个带有标签和文本框的用户窗体。我想遍历标签,获取其标题 属性 的值并将该值输入为我的列 headers.

这是我的代码片段:

Dim element As Control

    For Each element In WQTR_Form.Controls
        If TypeName(element) = "Label" Then
            For Each Cell In Range.Rows(1).Cells
                Cells.Value = ***Label.caption***
            Next Cell
        End If
     Next element

我想弄清楚的是如何获得 ***Lable.Caption***

我尝试了 element.Caption,但自动完成列表没有将标题显示为元素的 属性,因为在当前上下文中,元素的类型是控件。我需要的是如何为表单上的每个标签获取类型 Label.Caption 的值。

当然,我的整个做法可能是错误的!如果您有其他方法的建议,请告诉我。预先感谢您的帮助。

更新:*

首先感谢您的所有回答。现在,我有其他怪异之处。我在下面回应 Kostas K 的评论时提到了它,但我想将它添加到问题中。 For Each Cell in Range.Rows(1).Cells 中的 Cell 出现编译错误 "Variable Not Defined"。

所以,作为一个新手,我尝试添加 Dim Cell as Range。然后我得到一个编译错误,指出参数对于 For Each Cell in Range.Rows(1).Cells 中的 Range 不是可选的。也许第二个错误是添加 Dim 的结果?也许整行代码都是错误的!????

我曾考虑过尝试 For Each Cell in Range("A1":Z1) 之类的方法,但这似乎违背了 Rows(1).Cells 的目的。

您将使用控制变量,即 Element.Caption。您想要遍历用户表单中的所有 "Element" 并检查每个元素的标题。

谢谢 :)

您可以用element.BoundValue替换您的Lable.Caption 希望对你有帮助。

有几组 object 继承自更通用的 object。 Control是泛型object和几个object(TextBoxLabelComboBox)继承了[=11=的所有属性和方法] 然后添加仅适用于它们的更具体的属性和方法。

例如,每个控件都有属性 TopHeightLeftWidth。因此 MS 创建了一个名为 Control 的 class,其中包含这四个属性。然后他们创建了一个名为 Label 的 class,它继承自 Control,因此 Label 也将具有这四个属性。接下来,他们将 .Caption 属性 添加到 Label class - 标题特定于标签,不适用于文本框、列表框等

当你调用 lblMyLabel.Height 时,解释器通过 Label class 到 Control class 来找出 Height是。另一方面,您正在经历的部分是,当您调用 ctlMyControl.Caption 时,解释器会将其翻译成 ctlMyControl.Object.CaptionObject 属性 是通往 Label class Caption 属性 所在的路径。

因为解释器在 运行 时就知道它是什么类型的控件,Intellisense 在设计时不知道,只能给你通用的 Control 属性和方法。

要从标签创建列 headers,请考虑此代码

Private Sub CommandButton1_Click()

    Dim ctl As Control
    Dim lColCnt As Long

    For Each ctl In Me.Controls
        If TypeName(ctl) = "Label" Then
            lColCnt = lColCnt + 1
            Sheet1.Cells(1, lColCnt).Value = ctl.Caption
        End If
    Next ctl

End Sub

Dim 语句是您声明稍后将使用的变量的方式。 Me 关键字指的是我正在编写的用户表单。如果您的代码在标准模块中,您必须加载表单并按名称引用它(就像在您的代码中一样),但是如果您工作在表单的 class 模块中,您可以使用 Me.

每次遇到标签时,我都会增加一个变量,然后使用 Cells 属性 写出 CaptionCells 的第一个参数是行号(header 行为 1),第二个参数是列号,每个标签增加一个。