我如何解决'错误:Range类的PasteSpecial方法失败'?

问题描述 投票:0回答:2

我正在尝试编写一个宏,用于每天(星期一,星期二,星期三,星期四和星期五)从工作表复制表格(颜色,格式等),并在同一天粘贴到工作表(262张)中。 (星期一-星期一等。)工作表名称我在工作表“数据”中拥有的名称。

但我收到此错误:

运行时错误'1004':方法PasteSpecial类范围故障。

这是我的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
excel vba methods copy-paste
2个回答
0
投票

您可以使用Worksheets(“ SheetName”)。Paste方法,而不是Range.PasteSpecial方法。

但是,实际上,如果您要真正复制所有内容,建议使用完整的工作表副本:

    Worksheets("wednesday").Copy After:=Worksheets(Sheets.Count)
    ActiveSheet.Name = Worksheets("Data").Cells(i, 2).Value

0
投票

我修复了这两个问题后,就可以了。

您在代码中到处都有x1,而不是xl。– Justyna MK

请检查它是否应该为Operation:= xlPasteSpecialOperationNone而不是Operation:= x1None– skkakkar

© www.soinside.com 2019 - 2024. All rights reserved.