2015-04-13 55 views
0

我的搜索谷歌和stackoverflow相當廣泛,但我仍然收到錯誤。我相信我的錯誤在於定義列表框TestLB,它位於表格「佈局」(Sheet4)中。我試過把代碼放在我的工作表代碼和模塊代碼中。Excel VBA:在工作表中定義列表框並將選定的項目分配給數組

Sub Reserve_Click() 

Dim SuggestList As MSForms.ListBox 
Set SuggestList = Worksheets("Layout").TestLB 

Dim Size As Integer 
Size = SuggestList.ListCount - 1 

ReDim ReserveAry(0 To Size) As String 
Dim i As Integer 

    For i = 0 To Size 
      If SuggestList.Selected(i) Then 
      ReserveAry(i) = SuggestList.Selected(i).Value 

       Worksheets("Suggestions").Cell(i + 1, 3) = ReserveAry(i) 
      End If 
     Next i 
End Sub 

我得到一個:在 ReserveAry(i) = SuggestList.Selected(i).Value

回答

0

的錯誤是在您確定要添加到陣列中的列表框中的值的方式「編譯錯誤無效的限定詞」。 SuggestList.Selected(i)返回true或false,並且沒有value屬性。

相反,代碼應閱讀ReserveAry(i) = SuggestList.List(i)

代碼仍可能有點瑕疵。您循環顯示列表框中的項目,然後使用它們在列表框中的位置將僅選中的項目添加到數組中。例如,如果選擇項目1和項目3,則數組將如下所示:Res(0) = "Item 1"; Res(1) = ""; Res(2) = "Item 3"您是否期望那些空的數組值?

+0

我明白你的意思是關於刪除.value和數組中的空條目。但是刪除.value我仍然得到「對象不支持此屬性或方法」。正如我提到的,我認爲我不恰當地聲明瞭列表框,因爲在評論for循環和邏輯時我仍然遇到錯誤。所以我想我的問題是: 'Dim SuggestList As MSForms.ListBox' 'Set SuggestList = Worksheets(「Layout」)。TestLB' that ok? – JLusk

+0

我在我的測試代碼中使用了與你自己相同的聲明方法,它工作正常。你不僅需要刪除'.Value'。你必須使用'.List(I)'屬性。 '.Selected'只會告訴你是否選擇該項目。 – user3561813

相關問題