Excel VBA - 适用于每个标签/用户表单

时间:2015-06-14 15:09:40

标签: excel vba excel-vba

我有一个Excel GameMapBuilder,其上有几个Userform,其中一些是Labels

以下可能吗?

Frame

如果是的话,你是怎么做到的? 或者你可以将其中的一些分组,然后将其作为该组的成员控制,如

For each label [that is on the frame]
    [code]
Next label

? 如果是的话,你是怎么做到的?我试图将它们分组,但没有成功。

我希望用户表单作为For each label in [groupname] [code] Next label 用作仪表板的东西......当然,在user input interface上做起来会容易得多,但是你呢真的不能让它看起来很漂亮worksheet - 就像,你呢? (即,在没有菜单的情况下运行一个小窗口或除了" userform"之外的任何区域。)

2 个答案:

答案 0 :(得分:2)

尝试使用此方法循环表单中的所有标签:

For Each ctrl In Me.Controls
    If TypeName(ctrl) = "Label" Then
        Debug.Print ctrl.Name
    End If
Next ctrl

这用于循环框架内的标签(在我的情况下名称为Frame1

For Each ctrl In Me.Frame1.Controls
    If TypeName(ctrl) = "Label" Then
        Debug.Print ctrl.Name
    End If
Next ctrl

答案 1 :(得分:0)

稍微扩展一下。也适用于MS Access,如下所示,以映射使用过的标签。

表格OnOpen活动:

 Private Sub Form_Open(Cancel As Integer)
 List_Labels Me.Form
 End Sub

调用子程序(我将它们保存在一个单独的模块中):

Sub List_Labels(ByRef frm As Form)
Dim ctrl As Control

For Each ctrl In frm.Controls
    If TypeName(ctrl) = "Label" Then
        Debug.Print frm.Name & " - " & ctrl.Name & " value: " & ctrl.Caption
    End If
Next ctrl
End Sub