2015-06-14 38 views
1

我有一个Excel Userform并在其上我有几个Labels,其中一些在Frame上。Excel VBA - 对于每个标签/用户表格

以下可能吗?

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

如果是的话,你是怎么做到的? 或者你能组其中的一些,然后控制他们作为该组的成员一样

For each label in [groupname] 
    [code] 
Next label 

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

我希望这个用户表单可以用作user input interface,同时还有一个仪表盘类的东西......当然,在worksheet上做的事情要容易得多,但是你不能真正使它看起来不错,userform -like,可以吗? (即运行为没有菜单或比这将是“用户窗体”该地区以外的任何一个小窗口。)

+0

什么你想实现的是可能由于集合 – Gino

回答

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 
+0

非常感谢,马雷克。我很感激。 – metrazol

+0

@metrazol [控件类型](https://msdn.microsoft.com/en-us/library/office/aa224135(v = office.11​​).aspx)文档也有关于此的良好信息 – JGreenwell

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