2013-03-05 43 views
0

我有以下代碼,當然它不工作,但我希望它表明我的意圖。循環throgh幾個列表框vba

Dim lItem As Long 
Dim input_sh As Worksheet 
Dim lb As ListBox 
Set input_sh = ActiveWorkbook.Sheets("Input") 
    For i = 1 To 4 
     lb = "ListBox" & i 
     For lItem = 0 To lb.ListCount - 1 
      If lb.Selected(lItem) = True Then 
       input_sh.Cells(1, 14 + i) = lb.List(lItem) 
       lb.Selected(lItem) = False 
      End If 
     Next lItem 
    Next i 

基本上我有在用戶窗體4列表框和將使用一個for循環,以獲得選定的項目,而不是具有用於循環爲每個列表框。

感謝

+0

您是否嘗試過的了'.Controls'收集循環形成? – 2013-03-05 17:28:56

+0

不,我不應該說我非常喜歡初學者:-( – 2013-03-05 17:33:13

+1

'Set lb = Me.Controls(「ListBox」&i)' – 2013-03-06 01:41:28

回答

0

對這一問題的評論回答,只是以使在堆棧它少了一個沒有答案的問題(並最終在密切票堆棧):

Dim input_sh As Worksheet 
Dim lb As ListBox 

Set input_sh = ActiveWorkbook.Sheets("Input") 
For i = 1 To 4 

    Set lb = Controls("ListBox" & i) 

    ' object "lb" now contains a reference to the appropriate ListBox control. 
    ' (do something with lb) 

Next i 

這是VB6和VBA之間的區別之一:在VBA中不能有控制陣列。在VB6,你可能把所有的列表框,說MyListBox,並給予他們一個指數 1和4之間,使得代碼如下所示:

Dim lb As ListBox 

For i = 1 To 4 

    Set lb = MyListBox(i) 

    ' object "lb" now contains a reference to the appropriate ListBox control. 
    ' (do something with lb) 

Next i