0

我有 2 个范围变量。我想要一个循环,它获取一个范围变量的第一行并将其添加到另一个范围变量的末尾。

IE:

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修改范围的大小(在这种情况下也是最后一行)。它在第二行不起作用,因为您不想更改最后一行,而是更改起始行;您可以重新定义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 回答