2016-01-04 42 views
0

有一個優秀的VBA表單,有多個下拉菜單(超過10個)。 那些下拉菜單是使用下面的代碼來填充:如何動態引用vba對象?

With Me.Controls("MyComboBox") 
    .Clear 
Do 
    .AddItem MyRecordSet![MyColumn] 
     MyRecordSet.MoveNext 
     Loop Until MyRecordSet.EOF 
End With 

有動態設置爲「MyComboBox」的價值觀的一種方式,「MyRecordSet」,「MyColumn」的對象?

目標是將所有的組合框填充到一個循環中,而不是必須一遍又一遍地重複使用10多組相同的代碼。

「MyComboBox」和「MyRecordSet」對象具有相似的名稱,但不相同。

+0

看看循環的控制,並獲得類型,然後使用一些標記或後面添加或前綴它們的標題,或好老,如果在代碼中的語句,你可以定義他們當窗體加載了 –

+0

暗淡C作爲控制me.controls中的每個c ......下一個c –

+4

只需創建一個子程序並將它們作爲參數傳入即可。 – RBarryYoung

回答

1
Dim c As Control 
dim s() as string 

For Each c In Me.Controls 

If TypeName(c) = "ComboBox" Then 
    ' HERE YOU COULD GET THE RECORDSET INFO FROM THE CONTROLS TAG?? 
    ' Or using Ifs or have the name as name_prop1_prop2..... 
    If c.Name = "Dr1" Then 

    Else 

    End If 
End If 

' or 

' s =split(c.name,"_") 
' recordset = s(0) 
' column=s(1) 

next c