我有一个变量,它在开头设置为给定范围。
我想要一个循环语句,它将从给定范围的末尾开始下一行并将其添加到该范围。
即:
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)隐藏
答案 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