How do I fix 'Error: PasteSpecial method of Range class failed'?
How do I fix 'Error: PasteSpecial method of Range class failed'?
我正在尝试编写一个宏,用于每天(星期一、星期二、星期三、星期四和星期五)从 sheet 复制表格(颜色、格式等)并粘贴到 sheets (262 sheets) 为同一天。 (星期一 - 星期一等)我在 sheet "Data" 中的工作表名称。
但是我得到了这个错误:
Run-time error '1004': Method PasteSpecial class Range Failure.
这是我的 VBA 宏:
Sub copy_paste()
For i = 1 To 262
If 1 = i Mod 5 Then
Worksheets("wednesday").Activate
Cells.Select
Application.CutCopyMode = False
Selection.Copy
' This is the problem part of code (said Debugger)
Sheets(Worksheets("Data").Cells(i, 2).Value).Range("A1").PasteSpecial _
Paste:=x1PasteAllUsingSourceTheme, Operation:=x1None _
, SkipBlanks:=False, Transpose:=False
End If
If 2 = i Mod 5 Then
Sheets("thursday").Select
Application.CutCopyMode = False
Selection.Copy
Sheets(Worksheets("Data").Cells(i, 2).Value).Range("A1").PasteSpecial _
Paste:=x1PasteAllUsingSourceTheme, Operation:=x1None _
, SkipBlanks:=False, Transpose:=False
End If
If 3 = i Mod 5 Then
Sheets("friday").Select
Application.CutCopyMode = False
Selection.Copy
Sheets(Worksheets("Data").Cells(i, 2).Value).Range("A1").PasteSpecial _
Paste:=x1PasteAllUsingSourceTheme, Operation:=x1None _
, SkipBlanks:=False, Transpose:=False
End If
If 4 = i Mod 5 Then
Sheets("monday").Select
Application.CutCopyMode = False
Selection.Copy
Sheets(Worksheets("Data").Cells(i, 2).Value).Range("A1").PasteSpecial _
Paste:=x1PasteAllUsingSourceTheme, Operation:=x1None _
, SkipBlanks:=False, Transpose:=False
End If
If 0 = i Mod 5 Then
Sheets("tuesday").Select
Application.CutCopyMode = False
Selection.Copy
Sheets(Worksheets("Data").Cells(i, 2).Value).Range("A1").PasteSpecial _
Paste:=x1PasteAllUsingSourceTheme, Operation:=x1None _
, SkipBlanks:=False, Transpose:=False
End If
Next i
End Sub
您可以使用 Worksheets("SheetName").Paste 方法,而不是 Range.PasteSpecial 方法。
但实际上,如果您真的要复制所有内容,我建议您使用完整的工作表副本:
Worksheets("wednesday").Copy After:=Worksheets(Sheets.Count)
ActiveSheet.Name = Worksheets("Data").Cells(i, 2).Value
我解决了这两个问题后,它就可以了。
You have x1 everywhere in your code instead of xl.
– Justyna MK
please check whether it should be Operation:=xlPasteSpecialOperationNone instead of Operation:=x1None
– skkakkar
我正在尝试编写一个宏,用于每天(星期一、星期二、星期三、星期四和星期五)从 sheet 复制表格(颜色、格式等)并粘贴到 sheets (262 sheets) 为同一天。 (星期一 - 星期一等)我在 sheet "Data" 中的工作表名称。
但是我得到了这个错误:
Run-time error '1004': Method PasteSpecial class Range Failure.
这是我的 VBA 宏:
Sub copy_paste()
For i = 1 To 262
If 1 = i Mod 5 Then
Worksheets("wednesday").Activate
Cells.Select
Application.CutCopyMode = False
Selection.Copy
' This is the problem part of code (said Debugger)
Sheets(Worksheets("Data").Cells(i, 2).Value).Range("A1").PasteSpecial _
Paste:=x1PasteAllUsingSourceTheme, Operation:=x1None _
, SkipBlanks:=False, Transpose:=False
End If
If 2 = i Mod 5 Then
Sheets("thursday").Select
Application.CutCopyMode = False
Selection.Copy
Sheets(Worksheets("Data").Cells(i, 2).Value).Range("A1").PasteSpecial _
Paste:=x1PasteAllUsingSourceTheme, Operation:=x1None _
, SkipBlanks:=False, Transpose:=False
End If
If 3 = i Mod 5 Then
Sheets("friday").Select
Application.CutCopyMode = False
Selection.Copy
Sheets(Worksheets("Data").Cells(i, 2).Value).Range("A1").PasteSpecial _
Paste:=x1PasteAllUsingSourceTheme, Operation:=x1None _
, SkipBlanks:=False, Transpose:=False
End If
If 4 = i Mod 5 Then
Sheets("monday").Select
Application.CutCopyMode = False
Selection.Copy
Sheets(Worksheets("Data").Cells(i, 2).Value).Range("A1").PasteSpecial _
Paste:=x1PasteAllUsingSourceTheme, Operation:=x1None _
, SkipBlanks:=False, Transpose:=False
End If
If 0 = i Mod 5 Then
Sheets("tuesday").Select
Application.CutCopyMode = False
Selection.Copy
Sheets(Worksheets("Data").Cells(i, 2).Value).Range("A1").PasteSpecial _
Paste:=x1PasteAllUsingSourceTheme, Operation:=x1None _
, SkipBlanks:=False, Transpose:=False
End If
Next i
End Sub
您可以使用 Worksheets("SheetName").Paste 方法,而不是 Range.PasteSpecial 方法。
但实际上,如果您真的要复制所有内容,我建议您使用完整的工作表副本:
Worksheets("wednesday").Copy After:=Worksheets(Sheets.Count)
ActiveSheet.Name = Worksheets("Data").Cells(i, 2).Value
我解决了这两个问题后,它就可以了。
You have x1 everywhere in your code instead of xl. – Justyna MK
please check whether it should be Operation:=xlPasteSpecialOperationNone instead of Operation:=x1None – skkakkar