VBA在运行时添加到数组

sha*_*had 3 vb6 vbscript vba

我试图在运行时从记录集的结果创建一个int数组.

Do While Not rstSearchResult.EOF

 If rstSearchResult(ID) = blah Then 
  'Add this Id rstSearchResult(ID) to Array
 End If

 Call rstSearchResult.MoveNext()
Loop
Run Code Online (Sandbox Code Playgroud)

我需要的是同样的结果,这会给我 Array(35588, 35589, 35595)

ray*_*ray 8

Dim myIntArray() as Integer
Dim intDimension as Integer

intDimension = 0

Do While Not rstSearchResult.EOF

 If rstSearchResult(ID) = blah Then   
  'Add this Id rstSearchResult(ID) to Array
  REDIM PRESERVE myIntArray(intDimension)
  myIntArray(intDimension) = rstSearchResult(ID)
  intDimension = intDimension +1
 End If

 Call rstSearchResult.MoveNext()
Loop
Run Code Online (Sandbox Code Playgroud)


Tmd*_*ean 6

当我需要从Recordset复制到数组时,将数组ReDim到你想要的大小而不是在循环中重新定位它会更有效.

Dim myIntArray() as Integer
Dim intDimension as Integer

rstSearchResult.Filter = "ID = " & blah
ReDim myIntArray(rstSearchResult.RecordCount - 1)

intDimension = 0
Do Until rstSearchResult.EOF
    myIntArray(intDimension) = rstSearchResult!ID
    intDimension = intDimension + 1
    rstSearchResult.MoveNext
Loop
Run Code Online (Sandbox Code Playgroud)

请注意,要使RecordCount正常工作,您需要将记录集打开为静态.

rstSearchResult.Open "tblSearchResult", cnn, adOpenStatic
Run Code Online (Sandbox Code Playgroud)