VBA Excel 2-мерные массивы

Я пытался узнать, как объявить двумерный массив, но все примеры, которые я нашел до сих пор, объявлены с заданными целыми числами. Я пытаюсь создать программу, которая будет использовать два двумерных массива, а затем выполнять простые операции с этими массивами (например, находить разницу или процент). Массивы заполняются числами на листах Excel (один набор чисел находится на Листе 1, а другой набор - на Листе 2, оба набора имеют одинаковое количество строк и столбцов).

Поскольку я не знаю, сколько строк или столбцов там я собирался использовать переменные.

Dim s1excel As Worksheet
Dim s2excel As Worksheet
Dim s3excel As Worksheet
Dim firstSheetName As String
Dim secondSheetName As String
Dim totalRow As Integer
Dim totalCol As Integer
Dim iRow As Integer
Dim iCol As Integer

Set s1excel = ThisWorkbook.ActiveSheet

' Open the "Raw_Data" workbook
Set wbs = Workbooks.Open(file_path & data_title)
wbs.Activate
ActiveWorkbook.Sheets(firstSheetName).Select
Set s2excel = wbs.ActiveSheet

' Find totalRow, totalColumn (assumes there's values in Column A and Row 1 with no blanks)
totalRow = ActiveSheet.Range("A1").End(xlDown).Row
totalCol = ActiveSheet.Range("A1").End(xlToRight).Column

Dim s2Array(totalRow, totalCol)
Dim s3Array(totalRow, totalCol)

For iRow = 1 To totalRow
    For iCol = 1 To totalCol
        s2Array(iRow, iCol) = Cells(iRow, iCol)
    Next iCol
Next iRow

ActiveWorkbook.Sheets(secondSheetName).Select
Set s3excel = wbs.ActiveSheet

For iRow = 1 To totalRow
    For iCol = 1 To totalCol
        s3Array(iRow, iCol) = Cells(iRow, iCol)
    Next iCol
Next iRow

Когда я пытаюсь запустить это, я получаю ошибку времени компиляции в Dim s2Array (totalRow, totalCol) , говоря, что требуется постоянное выражение. Та же ошибка возникает, если я изменяю его на Dim s2Array (1 To totalRow, 1 To totalCol) . Поскольку я не С самого начала я не знаю, какие размеры есть, я не могу объявить это как Dim s2Array (1, 1) , потому что тогда я получу исключение, выходящее за пределы.

Спасибо,

Джесси Смотермон

9
задан Tim Stack 10 May 2019 в 13:51
поделиться