2015-06-14 34 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