2016-04-11 156 views
0
Sub RangeBulkAmend() 

    Set list = list.CreateInstance 
    Dim c As Range 
     Dim i As Long 
     Dim myarr() As Variant 

     For Each c In Selection 

      list.Add c.value  
     Next c 

      ReDim myarr(list.Count - 1) 

     For i = 1 To list.Count - 1 
      myarr(i) = list.Items(i) 
      msg = msg & vbCrLf & myarr(i) 

      Next i 



      {{ListWindow.ListBox1.list = myarr}} 

      Load ListWindow 

      ListWindow.Show 
end sub 

我對編譯錯誤,因爲我嘗試我的數組傳遞給一個列表的代碼用雙括號是編譯器在哪裏點太多,但如果我強調我得到的消息對象變量或用塊變量沒有設置任何幫助將很樂意欣賞謝謝你提前 請注意在上面的代碼引用的列表是我自己的自定義列表問題是發送數組到列表框中的雙花括號檢查它的代碼它產生的東西現在將其提取到列表框VBA添加數組列表

+2

你可以先加載陣列跳過一個循環'myArr,該= selection.Value'然後通過其循環加載您的列表,使用'對於i = LBOUND(myArr,該)到UBOUND(M yarr)'。這不是答案,而是一個建議。 –

+1

在這裏暗刺...在你調用Load ListWindow後設置列表。控制還不存在。 – Jeremy

+0

看起來你正在使用1作爲數組的UBound(這不是VBA默認值)。所以你可能想在你的VBA模塊中添加'Option Base 1'(在所有子目錄之前/之前)。 – Ralph

回答

1

如果只是您打算加載具有所選單元格值的列表框,則:

Sub RangeBulkAmend() 

    Dim myarr() As Variant 

    myarr = Selection.Value 

    Load ListWindow 
    ListWindow.ListBox1.List = myarr 
    ListWindow.Show 
End Sub 

願意這樣做嗎

或就此簡單地跳過整,只是分配selection.Value到列表框也可以工作:

Sub RangeBulkAmend() 

    Load ListWindow 
    ListWindow.ListBox1.List = Selection.Value 
    ListWindow.Show 
End Sub 

大規模添加到現有列表列表盒試試這個:

Sub RangeBulkAmend() 
    Load ListWindow 
    Dim myarr() As Variant 
    Dim oldarr() As Variant 
    Dim t&, i& 

    myarr = Selection.Value 

    t = ListWindow.ListBox1.ListCount 

    ReDim oldarr(0 To (ListWindow.ListBox1.ListCount + UBound(myarr, 1) - 1)) As Variant 
    For i = 0 To UBound(oldarr) 
     If i < ListWindow.ListBox1.ListCount Then 
      oldarr(i) = ListWindow.ListBox1.List(i) 
     Else 
      oldarr(i) = myarr(i - t + 1, 1) 
     End If 
    Next i 

    ListWindow.ListBox1.List = oldarr 
    ListWindow.Show modal 
End Sub