我有一个范围
Set rng = Range("B5:H20")
我想创建一个包含除rng
第一行之外的所有单元格的子范围。有什么好办法呢?
Set subRng = 'Range("B6:H20")
答案 0 :(得分:5)
使用偏移和调整大小的混合
set rng = Range("B5:H20")
set subrng=rng.offset(1).resize(rng.rows.count-1)
如果您只使用行,则不需要在offset或resize中指定第二个参数(列)。
答案 1 :(得分:3)
另一种通用方法是Offset
和Intersect
模式。无论你如何进行转换,它都优于Resize
同样的工作(可以移动1列或行,而无需重新考虑Resize
部分)。
它在技术上也适用于不连续的范围,尽管用例很少见。
Set subrng = Intersect(rng.Offset(1), rng)
答案 2 :(得分:0)
目的是什么?您的方法可以与评论的部分一起使用。您也可以将顶行设置为变量,并使用...类似
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))
答案 3 :(得分:0)
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
答案 4 :(得分:0)
我没有使用VBA,所以这可能不是最简单的方法,但它应该有效:
Set subRng = rng.Range(rng.Cells(2, 1), rng.Cells(rng.Rows.Count, rng.Columns.Count))