不正确复制值

时间:2017-02-13 20:04:16

标签: excel vba excel-vba

我的宏有问题,只能在同一张纸上复制粘贴范围A6:AM46,A52:AM84AN6的值。

 Sub PréparerGrilles()


    Range("A6:AM46,A52:AM84").Select
    Selection.Copy

    Range("AN6").Select
    Application.CutCopyMode = False
    ActiveSheet.Paste

End Sub

我收到1004错误(多选错误) 你能帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

Application.CutCopyMode = False清除剪贴板....

更好的代码是:

 Sub Test()

    Dim wb As Workbook, ws As Worksheet

    Set wb = ThisWorkbook
    Set ws = wb.Sheets("SOMMAIRE") 'this means it will only work on this sheet, you should change the name of the sheet or ask me what do you want in order to get it working on other sheets

    ws.Range("A6:AL46").Copy
    ws.Range("AN6").PasteSpecial xlValues

    ws.Range("A52:AM84").Copy
    ws.Range("AN52").PasteSpecial xlValues

 End Sub

编辑:现在应该这样做了。试一试,告诉我它是否有效

Edited2:这就是你想要的,至少你到目前为止所要求的是什么。

答案 1 :(得分:1)

要将A6:AM46,A52:AM84复制到AN6:BZ46,AN52:BZ84,您可以执行以下操作:

Sub PreparerGrilles()
    Range("AN6:BZ46").Value = Range("A6:AM46").Value
    Range("AN52:BZ84").Value = Range("A52:AM84").Value
End Sub

使用Range.Copy方法的版本:

Sub PreparerGrilles()
    Range("A6:AM46").Copy Destination:=Range("AN6:BZ46")
    Range("A52:AM84").Copy Destination:=Range("AN52:BZ84")
    Range("AN6:BZ46").Value = Range("AN6:BZ46").Value
    Range("AN52:BZ84").Value = Range("AN52:BZ84").Value
End Sub

我建议您不要使用此代码来降低代码速度。如果您的公式引用了不属于副本的任何内容,它也会导致可能不正确的值。

使用PasteSpecial xlPasteValues方法的版本:

Sub PreparerGrilles()
    Range("A6:AM46").Copy
    Range("AN6:BZ46").PasteSpecial xlPasteValues
    Range("A52:AM84").Copy
    Range("AN52:BZ84").PasteSpecial xlPasteValues
End Sub

强烈建议不要使用此方法,因为它会导致太多"不可再生的"由于用户在代码执行复制和执行粘贴之间通过剪贴板复制内容而导致的错误,以及因为复制会破坏用户可能手动粘贴到剪贴板的任何内容。