最初に一連のセルから Range をコンパイルし、後で範囲をループしてセル内のデータを収集するプログラムを VBA で作成しています。
問題は、セルを追加する順序を維持するために範囲が必要であるため、戻ったときに正しい順序でデータを収集できることです。データが隣接する列にある場合、範囲はそれを行のスタックに変換します。
このプログラムを実行すると、次のようになります。
サブ test_function()
Dim My_Range As Range
Dim My_Cell をバリアントとして
Dim i As Integer
私は= 0
Set My_Range = Union(ActiveSheet.Range("A1:A5"), ActiveSheet.Range("B1:B5"))
My_Range 内の My_Cell ごとに
i = i + 1
My_Cell.Value = i
次の My_Cell
サブ終了
範囲がデータの 2 つの隣接する列 (A1:A5 と B1:B5) でコンパイルされていることがわかりますが、この EXPECTED 出力の代わりに:
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") Set My_Range = Union(My_Range, ActiveSheet.Range("A2")) Set My_Range = Union(My_Range, ActiveSheet) を使用して一度に 1 つのセルを追加しても、この動作を再現します。 .Range("A3")) など...
範囲にセルを追加する順序を保持する方法はありますか? または、隣接する範囲を分離する唯一の方法はありますか? 少なくとも(正確な順序を維持することができない場合)、FIRST列とTHEN行を実行する方法はありますか?
-ダニエル