繁体   English   中英

VBA - 如何复制一列但粘贴两次?

[英]VBA - How to copy a column once but paste it twice?

我有一列需要复制到同一列的底部两次。 我的代码是:

Range("AQ2:AQ" & LastRow).Copy Range("AQ" & LastRow + 1)

但是,我不能只写这行两次,因为它会使行数增加四倍,而不是三倍。 例如,如果列 AQ 是 4 行,则复制和粘贴一次会得到 8 行,但是重复该行将复制和粘贴 8,因此会得到 16 行。 但是,我只想要 12 行(4 行复制一次并粘贴两次)。

谢谢

您需要做的就是粘贴两次。 但需要注意的是,您需要在第二次粘贴之前更新LastRow

另外值得一提的是,在编码 VBA 时,强烈建议使用工作表对象。 这将为您的程序明确定义您的工作表,并且可以在将来为您省去很多麻烦。 养成习惯:)

请参阅以下代码(未测试):

Sub CopyPaste()

    Dim LastRow As Long
    Dim ws As Worksheet

    Set ws = Sheets("Sheet1")

    'find lastrow
    LastRow = ws.Range("AQ" & ws.Rows.Count).End(xlUp).Row

    'copy
    ws.Range("AQ2:AQ" & LastRow).Copy
    ws.Range("AQ" & (LastRow + 1)).Paste

    'update last row
    LastRow = ws.Range("AQ" & ws.Rows.Count).End(xlUp).Row

    'paste again
    ws.Range("AQ" & (LastRow + 1)).Paste

    'clear clipboard
    Application.CutCopyMode = False

    'clear ws object
    Set ws = Nothing

End Sub
Sub copycopy()

Dim sh As Worksheet
Dim i As Integer
Dim lRow As Long
Dim rng As Range

Set sh = Sheets("Sheet1")
'determine range to be copied
Set rng = sh.Range(sh.Range("AQ2"), sh.Range("AQ2").End(xlDown))
'find last row
lRow = sh.Cells(Rows.Count, "AQ").End(xlUp).Row + 1
'copy range twice
For i = 1 To 2
    rng.Copy Destination:=sh.Range("AQ" & lRow)
    lRow = sh.Cells(Rows.Count, "AQ").End(xlUp).Row + 1
Next i

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM