2013-12-19 4 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

То же самое было бы возможно, если метки не находятся внутри UserForm, а скорее на листе? – Ans

+0

Какие элементы управления находятся на рабочем листе? Элементы управления формой или ActiveX? Вы можете отправить новый вопрос, чтобы он мог не только помочь вам, но и будущим посетителям? –

2

Если вы хотите использовать это в VBA:

For i = 1 To X 
    UserForm1.Controls("Label" & i).Caption = MySheet.Cells(i + 1, i).Value 
Next 
Смежные вопросы