Copy-PasteSpecial在大范围内失败

时间:2014-11-25 14:21:41

标签: excel vba

Pastespecial将列中的值粘贴到下一列,但难以使其工作。

如果我使用此代码,它可以正常工作

Sub cps()
Range("F2:F500").Copy
Range("G2:G500").PasteSpecial Paste:=xlPasteValues
End Sub

Snag是一张查看SQL的Excel工作表,因此行数发生了变化,今天有2100,明天可能有2110.所以我尝试了下面的工作,以确保我抓住了所有的行.. < / p>

Sub cps()
Range("F2:F5000").Copy
Range("G2:G5000").PasteSpecial Paste:=xlPasteValues ' <~~~~ Error
End Sub

但我在第Range("G2:G5000").PasteSpecial Paste:=xlPasteValues

上收到错误

如果我不知道表格中有多少行,我该怎么做?

所以托马斯给了我一个有效的解决方案,但我只需要调整代码来查看3张单独的表格,AP,EMEA和WH。

1 个答案:

答案 0 :(得分:1)

您的代码运行正常。也许它是错误的,因为你没有从sheetmodule运行它而你没有限定你的Range。例如: 表格(“Sheet1”) .Range ActiveSheet .Range 就像我在下面做的那样。此代码也只会像您要求的那样复制使用的范围。

编辑:添加内容以从任何工作表中调用

创建一个新模块并将其移入其中:

Public Sub CopyCOlumnF(strSheet As String)

    Dim LastRow As Long

    With Sheets(strSheet)
        LastRow = .Cells(.Rows.Count, 6).End(xlUp).Row ' Column "F"=6
        .Range("F1:F" & LastRow).Copy
        .Range("G1:G" & LastRow).PasteSpecial Paste:=xlPasteValues
    End With

End Sub

然后在任何一个sheetmodule中,像这样调用sub:

Sub cps()
    CopyCOlumnF (ActiveSheet.Name)
End Sub

你也可以从任何地方调用它并将技巧应用到这样的任何表格:

CopyCOlumnF ("Sheet1")
CopyCOlumnF ("Sheet2")