获取除第一行以外的所有单元格的子范围?

我有一个范围

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的第二个参数(列)。

另一种多用途的方法是OffsetIntersect模式。 它的优势在于,无论您如何进行相同的工作,都可以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)) 

我想你正在寻找OffsetResize属性。 喜欢这个:

 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