2017-02-13 97 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