select空白行的范围单元格

我一直在弄清楚如何编码这个select范围的macros来包含空行。 工作表是具有可变数量的行和列的图表。 这是我迄今为止:

Sub Macro1() Range("A5").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy End Sub 

macros中的select步骤只会到那个空白行,不会再进一步​​(显然是因为它是空白的)。 出于这个原因,我尝试了适应这种不连续types的代码,但没有运气:

 Sub SelectRangeDown_Discontiguous() Range("A5", Range("A65536").End(xlUp)).Select End Sub 

我希望有人能帮我找出写这段代码的最好方法吗? 我在正确的道路上?

如果您使用.End(xlToRight).End(xlDown)您将停止在空白单元格。 如果你正在使用Range("A65536").End(xlUp)那么你只是select一个单一的列,但你从A5到下一个填充的单元格,绕过临时空白单元格。 横向扩展后一种方法。

 Sub Macro1() with Range("A5") .resize(cells(rows.count, "A").end(xlup).row - (.row - 1), _ cells(5, columns.count).end(xltoleft).column - (.column - 1)).Copy end with End Sub 

这对于一个.Parent 工作表对象来说会更好。

你不需要。select一些方法来复制它。


¹ 请参阅如何避免使用在Excel VBAmacros中select更多的方法来摆脱依靠select和激活来实现您的目标。

考虑:

 Sub whatever() Dim r1 As Range, r2 As Range ActiveSheet.UsedRange Set r1 = Range(Cells(5, 1), Cells(Rows.Count, Columns.Count)) Set r2 = Intersect(r1, ActiveSheet.UsedRange) End Sub