在可变范围内占一行?

时间:2017-11-17 10:02:30

标签: excel vba excel-vba dynamic

所以,我一直在使用来自不同论坛的各种代码来组合宏来使我的工作更轻松,但是我遇到了麻烦。我正在使用以下代码来自动填充并选择需要在其他位置复制和粘贴的动态范围:

Dim lastRow As Long
lastRow = Range("A" & Rows.Count).End(xlUp).Row

Range("AP2").AutoFill Destination:=Range("AP2:AP" & lastRow)
Range("AQ2").AutoFill Destination:=Range("AQ2:AQ" & lastRow)
Range("AR2").AutoFill Destination:=Range("AR2:AR" & lastRow)
Range("AS2").AutoFill Destination:=Range("AS2:AS" & lastRow)
Range("AT2").AutoFill Destination:=Range("AT2:AT" & lastRow)
Range("AU2").AutoFill Destination:=Range("AU2:AU" & lastRow)

Range("AP2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select

我相信,我所面临的问题是在最后一行(尽管我确信有人会告诉我有更简单的方法来解决第3-8行)。在此变量范围返回单行的情况下,Selection.End(xlDown)会抓取从第2行到底部的所有行,这意味着它太大而无法粘贴到目标中。我怎么能修改这个来计算单行?

仅供参考Selection.End(xlToRight)总是相同的列数,如果这有帮助的话。

1 个答案:

答案 0 :(得分:1)

如果您只想从第二行到最后一行选择范围AP:AU,只需:

Range(Range("AP2"), Range("AU" & Cells.Rows.Count).End(xlUp)).Select

顺便说一句。我怀疑你想做的下一件事是Selection.Copy。不要这样做,只需替换。选择.Copy。

Range(Range("AP2"), Range("AU" & Cells.Rows.Count).End(xlUp)).Copy