我有一个范围
Set rng = Range("B5:H20")
我想创建一个子范围,其中包含除第一行rng
单元格之外的所有单元格。这样做的好方法是什么?
Set subRng = 'Range("B6:H20")
混合使用偏移和调整大小
set rng = Range("B5:H20")
set subrng=rng.offset(1).resize(rng.rows.count-1)
如果只处理行,则无需在偏移量或调整大小中指定第二个参数(列)。
另一种通用方法是Offset
和Intersect
模式。 无论您如何进行轮班,它都比Resize
工作具有优势(可以移动 1 列或行而无需重新考虑Resize
部分)。
从技术上讲,它也适用于不连续的范围,尽管这种情况充其量很少见。
Set subrng = Intersect(rng.Offset(1), rng)
目的是什么?您的方法可以很好地处理注释部分。 您还可以将顶行设置为变量,并使用它...有点像
dim headerRow as Integer
headerRow = 5
Set rng = Range(Cells(headerRow,2),Cells(20,8))
Set subRng = Range(Cells(headerRow+1,2),Cells(20,8))
我不怎么使用 VBA,所以这可能不是最简单的方法,但它应该可以工作:
Set subRng = rng.Range(rng.Cells(2, 1), rng.Cells(rng.Rows.Count, rng.Columns.Count))
您正在寻找Offset
和Resize
属性。喜欢这个:
Set rng = Range("B5:H20")
Set subRng = rng.Offset(RowOffset:=1, ColumnOffset:=0).Resize(rng.Rows.Count - 1)
或更短(但不太清楚):
Set subRng = rng.Offset(1, 0).Resize(rng.Rows.Count - 1)
这是一个包含更多信息的教程:http://www.homeandlearn.org/the_offset_property.html