Copy-PasteSpecial在大范围上失败

粘贴特殊粘贴从列到下一列的值,但难以得到它的工作。

如果我使用这个代码,它工作正常

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

Snag是一个查看SQL的Excel工作表,所以行数有所变化,今天有2100个,明天可能会有2110个。所以我尝试了下面的方法来确保我抓住了所有的行。

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

但是我得到一个错误的行Range("G2:G5000").PasteSpecial Paste:=xlPasteValues

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

所以托马斯给了我一个解决scheme,但我只需要适应代码看看3个单独的工作表,AP,EMEA和WH。

你的代码工作正常。 也许它错了,因为你没有从sheetmodule运行它,你没有合格的范围。 例如: 表格(“Sheet1”). Range或ActiveSheet .Range像我这样做下面。 此外,这个代码将只复制使用的范围像你问。

编辑: 添加东西从任何工作表调用它

创build一个新的模块,并在其中移动此Sub:

 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 

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

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

你也可以从任何地方打电话给这样的表格:

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