Excel VBA:为多列列表框创build一个数组

昨天 ,我问了如何为一个列创build一个数组。 之前我只需要一个,但现在我有一个多列的列表框。 使用三个给我的代码,我试图编辑它,看它是否工作,但我认为我一定是做错了。 你能否告诉我,如果我做得正确,这只是我的程序的另一部分,或者如果我只是需要修复它。 另外它给了我

下标超出范围

这是我认为需要检查的部分:

Private Sub CommandButton1_Click() Dim listboxarr() Dim i As Long, j As Long Dim found As Boolean With Me.selecteditems For i = 0 To .ListCount - 1 For h = 1 To 2 If .Selected(i) Then found = True j = j + 1 k = k + 1 ReDim Preserve listboxarr(1 To j) listboxarr(j, k) = .List(i, h) End If Next i End With End Sub 

如果你想知道这是我使用它的地方。 这需要项目并build立格式,稍后用于从列表框中selecteditems项目添加和删除项目项目。 然后发送给上述任务,select所选对象并将其放入数组中,以便稍后用于打印电子邮件

 Private Sub UserForm_Initialize() For Each itemname In itemsheet.Range("A2:A3400") With Me.allitems .ColumnCount = 2 .ColumnWidths = "60;60" .AddItem itemname.Value .List(i, 0) = itemnum .List(i, 1) = Description i = i + 1 End With Next itemname For Each itemname In itemsheet.Range("A2:A3400") With Me.selecteditems .ColumnCount = 2 .ColumnWidths = "60;60" .List(i, 0) = itemnum .List(i, 1) = Description i = i + 1 End With Next itemname End Sub Private Sub addcb_Click() Dim iCtr As Long For iCtr = 0 To Me.allitems.ListCount - 1 If Me.allitems.Selected(iCtr) = True Then Me.selecteditems.AddItem Me.allitems.List(iCtr) End If Next iCtr For iCtr = Me.allitems.ListCount - 1 To 0 Step -1 If Me.allitems.Selected(iCtr) = True Then Me.allitems.RemoveItem iCtr End If Next iCtr End Sub Private Sub removecb_Click() Dim iCtr As Long For iCtr = 0 To Me.selecteditems.ListCount - 1 If Me.selecteditems.Selected(iCtr) = True Then Me.allitems.AddItem Me.selecteditems.List(iCtr) End If Next iCtr For iCtr = Me.selecteditems.ListCount - 1 To 0 Step -1 If Me.selecteditems.Selected(iCtr) = True Then Me.selecteditems.RemoveItem iCtr End If Next iCtr End Sub 

编辑 :我试图删除我添加甚至selecteditems 。 不用找了。