我正在使用的代码是:
Sub selectrange()
Dim rngSource As Range, rngDest As Range
Set rngSource = Range(Range("A1"), Range("A1").End(xlDown).End(xlToRight))
'Only used to check the data being copied
rngSource.Select
Set rngDest = Range("A1").End(xlToRight).Offset(0, 1)
rngSource.Copy
rngDest.PasteSpecial
End Sub
我们的想法是让代码选择包含数据的所有行/列,并将它们粘贴到另一个工作簿的下一个可用部分中。但是通过运行此代码,只复制和粘贴了一些列。
有问题的数据有12列(A到L),其中一些是空的,而不是标题。当我使用End(xlToRight).End(xlDown)时,Selection停止在任何行的第一个空单元格中,因此我在A列上包含日期的End(xlDown),然后End(xlToRight)包括所有可能的列如果他们有数据。
然而,当这样做时,选择在E列任意停止,尽管事实上列F已填充且没有空白单元格...
如果有人有任何想法,我将不胜感激!
由于
答案 0 :(得分:1)
我个人更喜欢活动表的使用范围而不是范围的CurrentRegion:
这是我敲了一张纸的结果:
?activesheet.usedrange.address
$ A $ 1:$ H $ 9
?Activecell.currentregion.address
$ A $ 4:$ B $ 6
您可以看到使用范围远大于当前区域。
但是,为了进一步深入研究,您知道列数并且您知道列A始终有数据,您最好这样做:
Set rngSource = Range("A1:L" & Range("A" & Rows.count).end(xlup).row)
答案 1 :(得分:0)
正如Dan所提到的,您可以使用UsedRange属性执行此任务。如果你做了很多VBA,你会发现Range-Info是你一遍又一遍地做的事情。您可能(或可能不)认为这有用:https://stackoverflow.com/a/28502702/4487534