尝试将记录集结果保存到数组vba中

尝试将记录集结果保存到数组vba中,vba,Vba,上面的代码成功地将数据返回到记录集中,但当尝试保存到数组中时,会抛出错误。。有人能说出哪里出了问题吗 谢谢你的时间 错误是因为您只选择了1列。因此,您的记录集只包含1列。您必须根据代码选择5列 要使代码正常工作,必须在查询中选择5列。否则,如果您只需再添加一列,则它将在str(1)=rs(2) 如果要将所有记录从记录集打印到str数组,则必须循环遍历记录集。我还建议不要使用固定大小的数组。因此,将代码从Dim str(5)更改为Dim str() 现在循环记录集 Sub TEST() Dim

上面的代码成功地将数据返回到记录集中,但当尝试保存到数组中时,会抛出错误。。有人能说出哪里出了问题吗


谢谢你的时间

错误是因为您只选择了1列。因此,您的记录集只包含1列。您必须根据代码选择5列

要使代码正常工作,必须在查询中选择5列。否则,如果您只需再添加一列,则它将在
str(1)=rs(2)

如果要将所有记录从记录集打印到str数组,则必须循环遍历记录集。我还建议不要使用固定大小的数组。因此,将代码从
Dim str(5)
更改为
Dim str()

现在循环记录集

Sub TEST()

Dim str(5)

    Set cnn = New ADODB.Connection
    Set rs = New ADODB.Recordset

If cnn.State = adStateOpen Then cnn.Close
    cnn.ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & _
    ActiveWorkbook.Path & Application.PathSeparator & ActiveWorkbook.Name
    cnn.Open

If rs.State = adStateOpen Then rs.Close
    rs.CursorLocation = adUseClient

strSQL = "SELECT DISTINCT ProductSubcategoryKey FROM [INSERT$] ORDER BY ProductSubcategoryKey DESC"

    rs.Open strSQL, cnn, adOpenKeyset, adLockOptimistic

'results are
'45
'40
'30
'34
'32

str(0) = rs(0)
str(1) = rs(1) 'Error occurs here
str(1) = rs(2)
str(2) = rs(3)
str(3) = rs(4)

Debug.Print str(0)
Debug.Print str(1)
Debug.Print str(2)
Debug.Print str(3)
Debug.Print str(4)

End Sub

实际上,我试图实现的是..从ProductSubCategory列中获取5个不同的值。。你能在这方面帮助我吗?但这不会工作,因为它只是一列被feteched。是否要将这些值分配给str数组?然后应该在记录集中循环?你们知道怎么做吗?首先告诉我为什么你们有像str(5)这样的5的数组?如果查询返回的记录超过5条,会发生什么情况?在您的情况下,如果查询返回的记录超过5条,那么您将只打印str数组中的5条记录str(0)、str(1)、str(2)、str(3)、str(4)contains=45
For i = 1 to rs.RecordCount
   str(i) = rs(0)
next