Arrays 通过列表框访问VBA循环选择项并添加到数组

Arrays 通过列表框访问VBA循环选择项并添加到数组,arrays,ms-access,vba,listboxitems,Arrays,Ms Access,Vba,Listboxitems,我正在尝试循环一个列表框,并将内容添加到数组中 我的代码是: Private Sub exportfolders\u Click() 将列表变暗为字符串 Dim folderlist作为字符串 Dim folderarray()作为字符串 “我就像一个整合器 对于i=0到Me.selectedfolders.ListCount-1 'folderlist=(Me.selectedfolders.Column(0,i)) 'folderarray()=加入(Me.selectedfolders.C

我正在尝试循环一个列表框,并将内容添加到数组中

我的代码是:

Private Sub exportfolders\u Click()
将列表变暗为字符串
Dim folderlist作为字符串
Dim folderarray()作为字符串
“我就像一个整合器
对于i=0到Me.selectedfolders.ListCount-1
'folderlist=(Me.selectedfolders.Column(0,i))
'folderarray()=加入(Me.selectedfolders.Column(0,i),“,”)
列表=(Me.selectedfolders.Column(0,i))
folderarray()=连接(列表,“”)
雷迪姆保留文件夹阵列(i)
接下来我
folderlist=folderarray
'folderarray()=联接(folderlist,“”)
MsgBox(文件夹列表)
端接头
你可以看到我注释掉的部分,尝试各种方法让它工作。但我一直在
folderarray(I)=Join(list),”
处收到消息“不能分配到数组”。关于我失败的地方有什么建议吗

1)声明数组。看看

2) 不需要支持变量

3) 使用正确的语法为数组赋值

Private Sub exportfolders_Click()

Dim folderarray() As String
Dim i As Interger

Redim folderarray (Me.selectedfolders.ListCount-1)

For i = 0 To Me.selectedfolders.ListCount - 1
    folderarray(i) = Me.selectedfolders.Column(0, i)
Next i

' Write here what you want to do with your array

End Sub

您可以尝试以下方法:

Private Sub ListToArray()
    Dim folderArray() As Variant
    Dim currentValue As String
    Dim currentIndex As Integer
    Dim topIndex As Integer

    topIndex = Me.selectedfolders.ListCount - 1
    ReDim folderArray(0 To topIndex, 0 To 1)

    For i = 0 To topIndex
        currentValue = Me.selectedfolders.Column(0, i)
        folderArray(i, 0) = i
        folderArray(i, 1) = currentValue
    Next i
End Sub

请注意,我的示例是一个多维数组,如果您选择添加多个项目,它将使您能够添加多个项目。在本例中,我添加了“I”值作为占位符/索引。

您可以将列表框项目连接到字符串中,然后使用
Split()
加载数组。这样,阵列就可以自动调整大小,而无需
ReDim

我在Access 2010中测试了此代码:

Dim folderarray()作为字符串
我想我会坚持多久
模糊strList作为字符串
因为我对我来说等于0!selectedfolders.ListCount-1
strList=strList&“,”和我!selectedfolders.列(0,i)
下一个
'使用Mid()排除第一个逗号。。。
folderarray=拆分(中间(strList,2),“,”)

注意,我不知道加载数组后要对其执行什么操作
MsgBox folderarray
将引发类型不匹配错误
MsgBox Mid(strList,2)
将是有效的,但如果这是您想要的,则不需要阵列。

尝试将阵列变暗为变体。定义为字符串的数组需要指定大小(即Dim folderarray(5)作为字符串),而Variant允许非指定大小。仍然获取“无法分配给数组”:(在将值分配给“folderarray()”之前放置“ReDim”语句,否则无法分配任何值。然后,在分配“folderarray()”时只有一个值必须使用索引(folderarray(i)=…)。如果要将整个列表分配给数组,则必须将该数组声明为“Variant”类型i get Run time error“13:即使变量设置为、Variant或string,类型也不匹配触发错误的行是:folderarray(i)=Join(list),”+为了简单和跳出框框思考。如果我是提问者,我肯定会奖励这个!谢谢!它成功了:),我的计划是在SQL语句中使用它,根据添加到列表框的数据导出更详细的结果。因为可以将许多变体添加到列表框中。