Я пишу программу на VBA, которая сначала компилирует Range из ряда ячеек, а затем выполняет цикл по диапазону для сбора данных в ячейках.
Проблема в том, что мне нужен диапазон для поддержания порядка, в котором я добавляю ячейки, чтобы я мог затем собрать данные в правильном порядке, когда я вернусь. Если данные находятся в соседних столбцах, то диапазон преобразует их в стопки строк.
Чтобы понять, что я имею в виду, если вы запустите эту программу:
Sub test_function ()
Dim My_Range As Range
Dim My_Cell As Variant
Dim i As Integer
i = 0
Set My_Range = Union (ActiveSheet.Range ("A1: A5"), ActiveSheet.Range ("B1: B5"))
Для каждой My_Cell в My_Range
i = i + 1
My_Cell.Value = i
Next My_Cell
End Sub
Вы можете видеть, что диапазон составлен из двух смежных столбцов данных (A1: A5 и B1: B5), но вместо этого ОЖИДАЕМОГО вывода:
1 6
2 7
3 8
4 9
5 10
Вы получаете
1 2
3 4
5 6
7 8
9 10
Это будет воспроизводить это поведение, даже если вы добавляете одну ячейку за раз, используя
Set My_Range = ActiveSheet.Range ("A1")
Установить My_Range = Union (My_Range, ActiveSheet.Range ("A2"))
Установить My_Range = Union (My_Range, ActiveSheet.Range ("A3"))
и т.д ...
Есть ли способ сохранить порядок, в котором я добавляю ячейки в диапазон? Или это единственный способ иметь отдельные соседние диапазоны? По крайней мере (если я не могу заставить его сохранить точный порядок), есть ли способ для него сделать столбцы FIRST и THEN строки?
-Daniel