Excel VBA - 获取UserForm标签标题属性

时间:2017-07-21 12:44:23

标签: excel vba label caption

我有一个带标签和文本框的UserForm。我想遍历Lables,获取其Caption属性的值并输入该值作为我的列标题。

以下是我的代码片段:

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但是自动完成列表没有将Caption显示为元素的属性,因为在当前上下文元素中属于Controls类型。我需要的是如何为我的表单上的每个Label获取Type Label.Caption的值。

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

UPDATE:*

首先感谢您的所有答案。现在,我有其他的怪异。我在回答Kostas K的评论时提到了它,但我想将其添加到问题中。我在Cell中收到For Each Cell in Range.Rows(1).Cells的编译错误“未定义变量”。

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

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

3 个答案:

答案 0 :(得分:0)

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

谢谢:)

答案 1 :(得分:0)

您可以用 element.BoundValue 替换 Lable.Caption 希望它可以帮到你。

答案 2 :(得分:0)

有一些对象继承自更通用的对象。 Control是一个通用对象,多个对象(TextBoxLabelComboBox)继承Control的所有属性和方法,然后添加更多特定属性和只适用于它们的方法。

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

当您致电lblMyLabel.Height时,口译员会通过Label课程到Control班级来确定Height是什么。另一方面,以及您遇到的部分是,当您致电ctlMyControl.Caption时,解释程序会将其转换为ctlMyControl.Object.CaptionObject属性是指Label属性所在的Caption类的途径。

因为解释器在运行时计算出它是什么类型的控件,所以Intellisense在设计时不知道并且只能为您提供通用的Control属性和方法。

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

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关键字指的是我正在编码的Userform。如果您的代码在标准模块中,则必须加载表单并按名称引用它(如代码中所示),但如果您正在工作在表单的类模块中,您可以使用Me

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