Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Excel VBA:为多列列表框创建数组_Arrays_Vba_Excel_Listbox - Fatal编程技术网

Arrays Excel VBA:为多列列表框创建数组

Arrays Excel VBA:为多列列表框创建数组,arrays,vba,excel,listbox,Arrays,Vba,Excel,Listbox,,我问如何为列创建数组。之前我只需要一个,但现在我有了一个多列列表框。使用给我的三个代码,我试图编辑它,看看它是否有效,但我想我一定是做错了。你能告诉我我是否做得正确,这只是我程序的另一部分,或者我只是需要修复它。此外,它给了我 下标超出范围 这是我认为需要检查的部分: Private Sub CommandButton1_Click() Dim listboxarr() Dim i As Long, j As Long Dim found As Boolean With Me.select

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

下标超出范围

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

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
如果你想知道这是我用它的地方。这将获取项目并建立格式,稍后用于从列表框中添加和删除项目
selecteditems
。然后将其发送到上面的任务,该任务选择所选对象并将其放入数组中,以便稍后将其用于打印到电子邮件中

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

编辑:我试图删除我添加的内容,甚至是
选择的编辑项
。无更改。

重拨保留列表框arr(1到j)
需要为二维。请注意,redim只能更改数组的最后一个维度。你忘了下一个h
。使用
选项explicit
,并在运行代码之前进行编译。
ReDim Preserve listboxarr(1到j)
需要为二维。请注意,redim只能更改数组的最后一个维度。你忘了下一个h
。使用
选项explicit
,并在运行代码之前编译。