Excel VBA – 获取UserForm标签标题属性的值

我有一个标签和文本框的用户窗体。 我想遍历Lables,得到他们的Caption属性的值,并input该值作为我的列标题。

这里是我的代码片段:

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作为元素的属性,因为在当前的上下文元素中的types是Controls。 我需要的是如何获得我的表单上的每个标签typesLabel.Caption的值。

当然,我的整个做法可能是错的! 如果你有另一种方法来做到这一点的build议,请告诉我。 在此先感谢您的帮助。

更新:*

首先谢谢你所有的答案。 现在,我有其他奇怪的。 我在回应Kostas K的评论时提到了这个,但是我想把它加到这个问题上。 For Each Cell in Range.Rows(1).Cells Cell中出现编译错误“variables未定义”。

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

我曾想过尝试像For Each Cell in Range("A1":Z1)但它似乎击败了Rows(1).Cells的目的。

有几组对象从一个更通用的对象inheritance。 Control是一个通用的对象,几个对象( TextBoxLabelComboBox )inheritance了Control所有属性和方法,然后添加更多只适用于它们的特定属性和方法。

例如,每个控件都具有TopHeightLeftWidth属性。 所以MS创build了一个名为Control的类,它包含了这四个属性。 然后他们创build了一个名为Label的类,该类inheritance自Control这样Label也可以拥有这四个属性。 接下来,他们将一个.Caption属性添加到Label类 – 标签专用于标签,不适用于文本框,列表框等。

当你调用lblMyLabel.Height ,解释器通过Label类到Control类来找出Height是什么。 另一方面,你正在经历的部分是,当你调用ctlMyControl.Caption ,解释器将它翻译成ctlMyControl.Object.CaptionObject属性是Caption属性所在的Label类的path。

因为解释器会计算出它在运行时是什么样的控制,所以Intellisense在devise时并不知道,只能给你通用的Control属性和方法。

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

 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语句是你如何声明将在以后使用的variables。 Me关键字是指我正在编写的用户表单。如果你的代码是在一个标准模块中,你必须加载表单并引用它(如你的代码中的名称),但是如果你在表单的类模块,你可以使用Me

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

你会使用控制variables,即Element.Caption 。 你想要遍历用户窗体中的所有“元素”,并检查每个元素的标题。

谢谢 :)

你可以用元素replace你的Lable.Caption .BoundValue希望它能帮助你。