将偏移行添加到给定范围。 Excel VBA

时间:2013-07-22 13:38:57

标签: excel vba auto-increment

我有一个变量,它在开头设置为给定范围。

我想要一个循环语句,它将从给定范围的末尾开始下一行并将其添加到该范围。

即:

myRows = Range(1:10)

    For Each cell in myRows

       If cell.Value > 2048 Then

           myRows = myRows + myRows.Offset(1, 0) ---This is where i need help---

基本上,每次循环运行时,如何自动增加范围。

编辑:

另外,我将如何添加到范围的前面。以及远离范围的背后。

范围(1:10)未被隐藏 范围(11:20)隐藏

我想在隐藏范围内添加一个隐藏范围,以便:

范围(1:11)未被隐藏 范围(12:20)隐藏

2 个答案:

答案 0 :(得分:4)

您有myRows作为Variant数据类型。您需要将其声明为Range对象。

Dim myRows as Range

然后您需要使用Set关键字来指定Range对象。

Set myRows = Range("1:10")

然后,使用范围.Resize方法:

Set myRows = myRows.Resize(myRows.Rows.Count+1, myRows.Columns.Count)

否则,如果您需要将myRows维护为Variant类型,请告诉我,我可以重新使用它。

答案 1 :(得分:3)

您也可以使用

Set myRows = Union(myRows, myRows.Offset(1, 0))

编辑:

你问了!

从通用范围中删除一行

Set myRows = RemoveRowFromRange(myRows, 10)

...

Function RemoveRowFromRange(ByVal Range As Range, row_number As Long) As Range
    With Range.Worksheet
        Select Case row_number
        Case 1
            Set Range = Intersect(Range, .Range(.Rows(2), .Rows(.Rows.Count)))
        Case .Rows.Count
            Set Range = Intersect(Range, .Range(.Rows(1), .Rows(.Rows.Count - 1)))
        Case Else
            Set Range = Union(Intersect(Range, .Range(.Rows(1), .Rows(row_number - 1))), Intersect(Range, .Range(.Rows(row_number + 1), .Rows(.Rows.Count))))
        End Select
    End With
    Set RemoveRowFromRange = Range
End Function