2016-08-02 46 views
0

我有以下VBA宏:複製相同的選擇

Sub test() 
For Each wks In ThisWorkbook.Worksheets 
Range("J1:Q300").Copy 
Range("A301:H601").PasteSpecial Paste:=xlPasteValues 
Application.CutCopyMode = False 
Next 
End Sub 

的想法是複製的範圍中的每個在我的Excel中的100張的:「H601 A301」,「J1 Q300」來文件。上面的宏不給我任何錯誤信息,但似乎只運行在第一張表。

你有什麼想法可能是我的代碼中的錯誤?

+0

你確實擁有「Dim wks As Worksheet」這一行嗎? –

+0

嗨嘿,不,我忘記了,但是現在它仍然不起作用。它似乎只在我啓動宏的那一刻選中的工作表中運行。 – Michi

+0

看到下面的答案,你需要添加需要添加'wks.Range' –

回答

1

您需要將當前對象添加到您的範圍:

Sub test() 

Dim wks As Worksheet 

For Each wks In ThisWorkbook.Worksheets 
    wks.Range("J1:Q300").Copy 
    wks.Range("A301:H601").PasteSpecial Paste:=xlPasteValues 
    Application.CutCopyMode = False 
Next wks 

End Sub 
1

如果您只是使用Range(),您將始終引用當前活動工作表。
你必須要麼改變當前活動工作表或僅僅是通過提供wks.Range更具體的():

Sub test() 
    For Each wks In ThisWorkbook.Worksheets 
    wks.Range("J1:Q300").Copy 
    wks.Range("A301:H601").PasteSpecial Paste:=xlPasteValues 
    Application.CutCopyMode = False 
    Next 
End Sub