Excel 复制粘贴在大范围内失败

Excel 复制粘贴在大范围内失败,excel,vba,Excel,Vba,paste Special可将值从一列粘贴到下一列,但很难使其正常工作 如果我使用这段代码,它可以正常工作 Sub cps() Range("F2:F500").Copy Range("G2:G500").PasteSpecial Paste:=xlPasteValues End Sub 问题是它是一个Excel表格,查看SQL,所以行数会发生变化,今天是2100行,明天可能是2110行。所以我尝试了下面的方法,以确保我抓住了所有的行 Sub cps() Range("F2:F5000").C

paste Special可将值从一列粘贴到下一列,但很难使其正常工作

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

Sub cps()
Range("F2:F500").Copy
Range("G2:G500").PasteSpecial Paste:=xlPasteValues
End Sub
问题是它是一个Excel表格,查看SQL,所以行数会发生变化,今天是2100行,明天可能是2110行。所以我尝试了下面的方法,以确保我抓住了所有的行

Sub cps()
Range("F2:F5000").Copy
Range("G2:G5000").PasteSpecial Paste:=xlPasteValues ' <~~~~ Error
End Sub
子cps()
范围(“F2:F5000”)。复制

范围(“G2:G5000”)。粘贴特殊粘贴:=xlPasteValues'您的代码运行正常。可能是因为您没有从sheetmodule运行它,并且您没有限定您的范围,所以它会出错。例如:Sheets(“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")
您也可以从任何位置调用它,并将此技巧应用于任何图纸,如下所示:

Sub cps()
    CopyCOlumnF (ActiveSheet.Name)
End Sub
CopyCOlumnF ("Sheet1")
CopyCOlumnF ("Sheet2")

我测试了你的代码,无法重现你的问题。代码按预期工作。你能给出一个可复制的例子吗?当指向粘贴范围时,只指定左上角的单元格。效果很好,谢谢Thomas。有一个问题是,虽然我有3张工作表,但我想对所有3张工作表运行这个宏,我该怎么做?表格名为AP、EMEA和WHEdit。当我编辑初始答案时,请回答您的初始问题