0

私は2つの範囲変数を持っています。1 つの範囲変数の最初の行を取り、それを他の範囲変数の最後に追加するループが必要です。

すなわち:

rng1 = Range("1:10")
rng2 = Range("11:20")

結果が次のようになるように、rng2 から行 11 を取得して rng1 に渡します。

rng1 = Range("1:11")
rng2 = Range("12:20")

ループが実行されるたびに、rng2 の先頭から取得し、rng1 の最後に渡します。

Union または Resize でこれを実行しようとしましたが、必要な方法で機能しません。Java では、配列を使用してこれを実行できることはわかっていますが、VBA でどのように配置されるかはわかりません。

Set rng1 = rng1.Resize(rng1.Rows.Count + 1, rng1.Columns.Count)
Set rng2 = rng2.Resize(rng2.Rows.Count - 1, rng2.Columns.Count)

どんな提案でも大歓迎です。

4

1 に答える 1

1

Resize範囲のサイズ (したがって、この場合は最後の行) を変更します。最後の行を変更するのではなく、最初の行を変更したくないため、2 行目では機能しません。rng2期待される条件を満たすように再定義するだけです。

Dim rowsToAdd As Integer: rowsToAdd = 1
Dim colName As String: colName = "A"
Set rng1 = rng1.Resize(rng1.Rows.Count + rowsToAdd, rng1.Columns.Count)
Set rng2 = Range(colName & CStr(rng2.Row + rowsToAdd) & ":" & colName & CStr(rng2.Row + rng2.Rows.Count - 1))

このコードは、例に示されている機能を提供します。つまり、rng1最後の行を増やしrowsToAdd、並行して、最初の行に追加されるrng2ように再定義します。rowsToAddの最後の行rng2は変更されずに維持されます。

これは、「この範囲から行を取得して、この別の行に入れる」よりも適応性の高い構造であることに注意してください。rng1の最後の行と の最初の行に行の変数名が追加されることを期待していますrng2

于 2013-07-25T13:59:16.353 に答える