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")