2017-02-13 100 views
0

我有一个问题,我的宏只复制粘贴范围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错误(多选错误) 你能帮我吗?

+0

当您的问题显示“A6:AM84”时,为什么您的代码使用“A6:AL46,A52:AM84”?如果行和列宽度不同,则不能复制多个选择。 – YowE3K

+0

范围(“A6:AM84”)给了我同样的问题...... –

+0

(a)使用'Range(“A6:AL46,A52:AM84”)''会给你一个'这个命令不能用于多选'错误。使用'Range(“A6:AM84”)'会给你一个'工作表类失败的粘贴方法'错误。这不是同一个问题。 (b)为了让我们能够提供一个答案,您的实际范围是**,试图复制? – YowE3K

回答

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 

我建议你不要慢你的代码通过使用这个。如果您的公式涉及任何不属于副本的内容,它也会导致潜在的错误值。

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

强烈建议不要使用这种方法,因为它会导致太多的“不可再生”的错误是由于用户通过之间的剪贴板复制的东西:


使用PasteSpecial xlPasteValues方法版当您的代码执行复制并执行粘贴时,以及由于您的复制将用户可能已手动粘贴到剪贴板的事实分开。

+0

这个工程,但我想用范围复制方法,谢谢 –

+0

@NicoCoallier为什么你想要使用'Range.Copy'方法?是否需要允许用户通过代码意外地将某些内容复制到剪贴板中以创建随机错误效果?出于某种原因,是否需要让代码变慢一点? – YowE3K

+0

我想构建一个开关,您可以稍后激活公式...... –

1

Application.CutCopyMode =假清除剪贴板....对于

更好的代码是:

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:这就是你想要的,至少对于你到目前为止所要求的。

+0

一次无法复制41 x 38范围和33 x 39范围。 (你**可以**复制一个41 x 39与一个33 x 39,可能41 x 38与41 x 39,但如果行和列都不同,那么Excel不喜欢它。) – YowE3K

+0

仍然给我1004错误 –

+1

@NicoCoallier - 你应该包括关于你在问题中遇到什么错误的细节 - 它会阻止人们试图解决你的问题时走错了路。 (但是通过将'CutCopyMode'设置为False来清除剪贴板会在修复原始错误后导致问题。) – YowE3K