vba - повторный массив 2d и попытка найти длину второго массива - PullRequest
0 голосов
/ 26 июня 2018

идея здесь в том, что у меня есть таблица со столбцом a, в которой она должна быть первой частью массива, а столбец B - целым числом, желающим, чтобы она была длиной второй части массива.

Вопрос здесь заключается в том, может ли массив иметь разную длину для верхних границ его второй части?

Так выглядит таблица

и это мой код, но, похоже, он не работает

Dim rowssheet2 As Variant
rowssheet2 = ThisWorkbook.Worksheets("Sheet2").Range("b2").End(xlDown).Row - 1
Dim arr2()
 ReDim arr2(rowssheet2)

 For i = 0 To rowssheet2
  ReDim arr2(i, ThisWorkbook.Worksheets("Sheet2").Range("B" & 2 + i).Value)
Arr2(i, 0) = ThisWorkbook.Worksheets("Sheet2").Range("A" & 2 + i).Value

Next i

В дальнейшем, если вы можете ответить на этот вопрос, и если это возможно, то я пытаюсь перебрать массив, но Ubound (arr2,2) не будет одинаковым для всего массива

1 Ответ

0 голосов
/ 27 июня 2018

Строго говоря, у массива VBA нет возможности иметь разные границы во втором измерении в зависимости от индекса первого. Это довольно очевидно из реализации массивов в VBA . (На самом деле, источник говорит о VB6, но нет никакой разницы в VBA.)

То, что вы делаете в цикле - это повторное измерение обоих измерений для всего массива. (См. Раздел 5.4.3.3 спецификации VBA .)

Однако концепция, которую вы пытаетесь реализовать, заключается в том, что зубчатый массив, то есть массив массивов, может быть построен в VBA. См. этот SO-ответ о том, как это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...