2014-11-25 46 views
0

粘貼特殊粘貼將列中的值粘貼到下一列,但難以使其工作。Copy-PasteSpecial在大範圍上失敗

如果我用這個代碼,它工作正常

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 

但我得到一個錯誤就行了Range("G2:G5000").PasteSpecial Paste:=xlPasteValues

我怎麼做,如果我不知道有多少行重新在表格中?

So Thomas給了我一個可行的解決方案,但我只需要修改代碼以查看3個單獨的工作表,AP,EMEA和WH。

+0

我測試了您的代碼,無法重現您的問題。代碼按預期工作。你能舉一個可重現的例子嗎? – 2014-11-25 14:44:18

+0

當指向粘貼範圍時,只指定左上角的單元格。 – 2014-11-25 14:44:54

回答

1

您的代碼工作正常。也許它錯誤,因爲你沒有從sheetmodule運行它,你沒有合格的範圍。例如:表( 「工作表Sheet1」) .RangeActiveSheet .Range像我下面做的。此外,該代碼將只複製使用的範圍,就像你問。

編輯:添加的東西,從任何表

把它創建一個新的模塊,並在其移動這樣子:在您的任何sheetmodules。然後

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 

,調用子像這樣:

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

你也可以從任何地方調用它並應用技巧到這樣的任何表:

CopyCOlumnF ("Sheet1") 
CopyCOlumnF ("Sheet2") 
+0

工程就像一個魅力,謝謝托馬斯。一個問題,雖然我有3張表,並希望對所有3運行這個宏,我會怎麼做?表格被稱爲AP,EMEA和WH – 2014-11-25 14:54:29

+0

在編輯初始答案時編輯您的初始問題 – 2014-11-25 14:55:50

+0

編輯完成的解決方案 – 2014-11-25 15:05:14