我的宏有问题,只能在同一张纸上复制粘贴范围A6:AM46,A52:AM84
到AN6
的值。
Sub PréparerGrilles()
Range("A6:AM46,A52:AM84").Select
Selection.Copy
Range("AN6").Select
Application.CutCopyMode = False
ActiveSheet.Paste
End Sub
我收到1004错误(多选错误) 你能帮我解决这个问题吗?
答案 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
我强烈建议不要使用此方法,因为它会导致太多"不可再生的"由于用户在代码执行复制和执行粘贴之间通过剪贴板复制内容而导致的错误,以及因为复制会破坏用户可能手动粘贴到剪贴板的任何内容。