【问题标题】:Excel Copy Paste Area not the SameExcel复制粘贴区域不一样
【发布时间】:2016-09-29 02:07:18
【问题描述】:

您好,我有这个 Excel 宏,它通过从现有工作表中复制粘贴某些内容来生成新工作表。基本上前三段重复三次,最后的第 10 段只是为了填充一列。但是对于第 7、8 和 9 段,它向我展示了 '错误 1004 复制和粘贴区域不一样' 而它在上面工作时没有任何此类问题。

    Sub Macro1()
    '
    ' Macro1 Macro
    '

    '
        Sheets.Add After:=ActiveSheet
        Sheets("Sheet1").Select
        Sheets("Sheet1").Move Before:=Sheets(2)
        Range("A1").Select
        ActiveCell.FormulaR1C1 = "Product Number"
        Range("B1").Select
        ActiveCell.FormulaR1C1 = "Product Desc"
        Range("C1").Select
        ActiveCell.FormulaR1C1 = "Service Type"
        Range("D1").Select
        ActiveCell.FormulaR1C1 = "Service Level"
        Range("E1").Select
        ActiveCell.FormulaR1C1 = "Service P/N"
        Range("F1").Select
        ActiveCell.FormulaR1C1 = "APAC(USD)"
        Range("F2").Select
Columns("A:A").ColumnWidth = 14.27
Columns("B:B").ColumnWidth = 15.13
Columns("C:C").ColumnWidth = 13.27
Columns("D:D").ColumnWidth = 13.13
Columns("E:E").ColumnWidth = 14.33
Columns("F:F").ColumnWidth = 12.07

Sheets("1. SMARTnet ").Select
Range("B9:C20694").Select
Selection.Copy
Sheets("Sheet1").Select
Range("A2").Select
ActiveSheet.Paste
Columns("B:B").ColumnWidth = 40

Sheets("1. SMARTnet ").Select
Range("D9:E20694").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("E2").Select
ActiveSheet.Paste

Range("D2").Select
Sheets("1. SMARTnet ").Select
Range("D1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("D2").Select
ActiveSheet.Paste
Columns("D:D").ColumnWidth = 17.07
Range("D3").Select
ActiveSheet.Paste
Range("D2:D3").Select
Selection.AutoFill Destination:=Range("D2:D20687"), Type:=xlFillDefault
Range("D2:D20687").Select



Sheets("1. SMARTnet ").Select
Range("B9:C20694").Select
Selection.Copy
Sheets("Sheet1").Select
Range("A20688").Select
ActiveSheet.Paste

Sheets("1. SMARTnet ").Select
Range("F9:G20694").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("E20688").Select
ActiveSheet.Paste

Range("D2").Select
Sheets("1. SMARTnet ").Select
Range("F1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("D20688").Select
ActiveSheet.Paste
Range("D20689").Select
ActiveSheet.Paste
Range("D20688:D20689").Select
Selection.AutoFill Destination:=Range("D20688:D41373"), Type:=xlFillDefault
Range("D20688:D41373").Select

Sheets("1. SMARTnet ").Select
Range("B9:C20694").Select
Selection.Copy
Sheets("Sheet1").Select
Range("A41374").Select
ActiveSheet.Paste

Sheets("1. SMARTnet ").Select
Range("H9:I20694").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("E41374").Select
ActiveSheet.Paste

Range("D2").Select
Sheets("1. SMARTnet ").Select
Range("H1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("D41374").Select
ActiveSheet.Paste
Range("D41375").Select
ActiveSheet.Paste
Range("D41374:D41375").Select
Selection.AutoFill Destination:=Range("D41374:D62059"), Type:=xlFillDefault
Range("D41374:D62059").Select

Sheets("1. SMARTnet ").Select
Range("B9:C20694").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("A62060").Select
ActiveSheet.Paste

Sheets("1. SMARTnet ").Select
Range("P9:P20694,U9:U20694").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("E62060").Select
ActiveSheet.Paste

Range("D2").Select
Sheets("1. SMARTnet ").Select
Range("P1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("D62060").Select
ActiveSheet.Paste
Range("D62061").Select
ActiveSheet.Paste
Range("D62060:D62061").Select
Selection.AutoFill Destination:=Range("D62060:D82745"), Type:=xlFillDefault
Range("D62060:D82745").Select



Range("C2").Select
ActiveCell.FormulaR1C1 = "SMARTnet"
Selection.AutoFill Destination:=Range("C2:C82745"), Type:=xlFillDefault
Range("C2:C82745").Select

结束子

任何提示将不胜感激:)

【问题讨论】:

    标签: excel error-handling excel-formula vba


    【解决方案1】:

    我认为你应该通过不使用“选择”来简化你的代码

    例如 而不是

    Sheets("1. SMARTnet ").Select
    Range("B9:C20694").Select
    Selection.Copy
    Sheets("Sheet1").Select
    Range("A2").Select
    ActiveSheet.Paste
    

    你可以写成

    Sheets("1. SMARTnet ").Range("B9:C20694").Copy Sheets("Sheet1").Range("a2")
    

    这样你就能更好地发现错误

    这也将运行得更快,因为它节省了屏幕更新时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多