Я новичок в vbscript и пытаюсь понять, как работать с 2D-массивами.Из моего исследования есть два способа получения 2D-массива, один из которых объявлен как 2D-массив:
Dim matrix(10, 10)
Однако проблема с этим типом 2D-массива заключается в том, что я не могу эффективно динамически изменить размер массива.Итак, я решил иметь двумерный массив, который по сути является одномерным массивом вариантов, которые являются массивами.Мой код для заполнения 2D-массива приведен ниже:
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\Users\johnk\Desktop\test.xlsx")
intRow = 1
intCol = 1
ReDim matrix(10) 'two dimensional array;
Do Until objExcel.Cells(intRow,1).Value = ""
ReDim cols(10) 'columns to be inserted for each row
Do Until objExcel.Cells(intRow, intCol).Value = ""
if UBound(cols) < intCol Then
ReDim Preserve cols(intCol * 2)
End If
cols(intCol) = objExcel.Cells(intRow, intCol).Value
obj1.Write(cols(intCol))
intCol = intCol + 1
Loop
intCol = 1
matrix(intRow) = cols
obj1.Write(vbCrLf)
if UBound(matrix) < intRow Then
ReDim Preserve rows(intRow * 2)
End If
intRow = intRow + 1
Loop
obj1.Write(vbCrLf)
obj1.Write(matrix(0)(0))
В этом коде я просто читаю из таблицы Excel и вводю их в матричную переменную.Однако, когда я пытаюсь получить к нему доступ:
obj1.Write(matrix(0)(0))
я получаю несоответствие типов.Я также не могу перебрать массив:
For i = LBound(matrix) To UBound(matrix)
For j = LBound(matrix(i)) To UBound(matrix(i))
obj1.Write(matrix(i)(j))
Next
obj1.Write(vbCrLf)
Next
, так как я получаю несоответствие типов во внутреннем цикле.Я объявляю или заполняю массив неправильно?Как правильно это сделать?