Это нельзя сделать.Извлечение значений в вариантный массив из ячеек рабочего листа всегда возвращает двухмерный массив на основе 1 независимо от того, имеете ли вы дело с одним или несколькими столбцами или несколькими столбцами и / или строками.
Option Base 0
(который по умолчанию используется в любом случае) не может изменить это поведение.
Предостережение: Application.Transpose, примененный один или два раза, может возвратить 1-D начинающийся с нуля массив одного столбца илиодна строка.
Вариант 1: просто преобразовать массив на лету
dim arr1 as variant, arr2 as variant, i as long
'for multiple row values in a single column
arr1 = range("a1:a9").value
redim arr2(lbound(arr1, 1) - 1)
for i = lbound(arr1, 1) to ubound(arr1, 1)
arr2(i-1) = arr1(i, 1)
next i
for i=lbound(arr2) to ubound(arr2)
debug.print i
debug.print arr2(i)
next i
'for multiple column values in a single row
arr1 = range("a1:i1").value
redim arr2(lbound(arr1, 2) - 1)
for i = lbound(arr1, 2) to ubound(arr1, 2)
arr2(i-1) = arr1(i, 2)
next i
for i=lbound(arr2) to ubound(arr2)
debug.print i
debug.print arr2(i)
next i
Вариант 2: транспонировать значения по мере их получения
dim arr as variant
arr = application.transpose(range("a1:a9").value)
for i=lbound(arr) to ubound(arr)
debug.print i
debug.print arr(i)
next i
arr = application.transpose(application.transpose(range("a1:i1).value))
for i=lbound(arr) to ubound(arr)
debug.print i
debug.print arr(i)
next i
Обратите внимание, что в варианте 2 транспонирование выполняется только один раз при преобразовании строк одного столбца в одномерный массив.Однако вам нужно дважды транспонировать, чтобы преобразовать столбцы одной строки в одномерный массив.
У функции Transpose есть предел переполнения целого числа со знаком или без знака (я не могу вспомнить, какой именно в данный момент).