Arrays 如何在VBA中将列表框中的所有选定数据存储在数组中

Arrays 如何在VBA中将列表框中的所有选定数据存储在数组中,arrays,excel,vba,listbox,Arrays,Excel,Vba,Listbox,我想知道是否有一种简单的方法将列表框中的所有选定项存储到数组中 我试着用下面的代码来做这件事,但没有成功。 FilterTest()不返回任何内容 Private子列表框1_Change() Dim FilterTest()作为变量 Dim myMsg作为字符串 我想我会坚持多久 将计数设置为整数 计数=1 对于ListBox1.ListCount-1的i=0 如果选择ListBox1.i,则 重拨保留筛选器测试(计数) 过滤器测试(计数)=列表框1.列表(i) 计数=计数+1 如果结束 接下来

我想知道是否有一种简单的方法将
列表框中的所有选定项存储到数组中

我试着用下面的代码来做这件事,但没有成功。
FilterTest()
不返回任何内容

Private子列表框1_Change()
Dim FilterTest()作为变量
Dim myMsg作为字符串
我想我会坚持多久
将计数设置为整数
计数=1
对于ListBox1.ListCount-1的i=0
如果选择ListBox1.i,则
重拨保留筛选器测试(计数)
过滤器测试(计数)=列表框1.列表(i)
计数=计数+1
如果结束
接下来我
端接头

你很接近。数组是以0为基数的集合(除非另有指定),因此从0开始计数。您也可以在声明变量时删除括号。接下来,第一次重拨变量,然后在接下来的迭代中重拨并保留它

Private Sub ListBox1_Change()

    Dim FilterTest As Variant
    Dim myMsg As String
    Dim i As Long
    Dim Count As Integer

    Count = 0

    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) Then
            If Count = 0 Then
                Redim FilterTest(Count)
            Else
                Redim Preserve FilterTest(Count)
            End If
            FilterTest(Count) = ListBox1.List(i)
            Count = Count + 1
        End If
    Next i

End Sub

@道林,“这些价值观”是什么意思?请澄清谢谢@Tim Stack你能解释一下为什么使用
Count=1
这不起作用吗?;)。我刚刚找到了这样做的方法,这就是我删除com排序的原因,因为
1
实际上是数组的第二项。这是一个基本0集合,因此
0
实际上是第一个项如何使用存储在数组中的数据?当我试图将所有选中的数据打印到Sub的消息框中时,我得到了错误代码9:超出范围。例如,为什么这个命令行不起作用
MsgBox FilterTest(1)
我想这会显示数组的第二个元素。如果不看到代码,恐怕我无法帮助您调试代码。我认为在这一点上,最好开始一个新问题,因为这些问题与主要问题无关。首先阅读有关数组的内容会有所帮助