获取除第一行以外的所有单元格的子范围?
我有一个范围
Set rng = Range("B5:H20")
我想创build一个包含除rng
第一行之外的所有单元格的子范围。 什么是这样做的好方法?
Set subRng = 'Range("B6:H20")
使用偏移和resize的混合
set rng = Range("B5:H20") set subrng=rng.offset(1).resize(rng.rows.count-1)
如果只使用行,则不需要指定偏移量或resize的第二个参数(列)。
另一种多用途的方法是Offset
和Intersect
模式。 它的优势在于,无论您如何进行相同的工作,都可以Resize
(可以移动1列或不重新Resize
部件的行)。
它在技术上也适用于不连续的范围,尽pipe这样的用例最好是罕见的。
Set subrng = Intersect(rng.Offset(1), rng)
目的是什么? 你的方法可以在评论部分中正常工作。 你也可以设置最上面一行作为variables,并使用…有点像
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