2013-12-19 113 views
6

我想根据存储在工作表中的值动态设置标签数组的标题(在VBA表单中)。因此,到目前为止,我可以将它们一个接一个这样的:如何动态更新VBA表单中的标签标题?

Label1.Caption = MySheet.Range("A1").Value 
Label2.Caption = MySheet.Range("B1").Value 
Label3.Caption = MySheet.Range("C1").Value ... 

有很多遵循一个经常性的图案的标签,我想用的东西更聪明,如:

'Method1 
For i = 1 To X 
    Dim MyLabel as Object: Set MyLabel = "Label" & i 
    MyLabel.Caption = MySheet.Cells(i + 1, i).Value 
Next i 
'Method2 
For i = 1 To X 
    Label(i).Caption = MySheet.Cells(i + 1, i).Value 
Next I 
'Both Methods failed. I really appreciate some feedback on this. 

回答

14

使用Controls对象

For i = 1 To X 
    Controls("Label" & i).Caption = MySheet.Cells(i + 1, i).Value 
Next 
+0

如果标签不在用户窗体内,而是在工作表上,这同样可能吗? – Ans

+0

工作表上有什么样的控件?表单控件或ActiveX控件?您可能想发布一个新问题,以便它不仅可以帮助您,还可以帮助未来的访问者? –

2

如果你想在VBA来使用:

For i = 1 To X 
    UserForm1.Controls("Label" & i).Caption = MySheet.Cells(i + 1, i).Value 
Next