2015-04-08 59 views
1

我有以下代碼,我試圖將數據從一張表複製到另一張工作簿中。當我運行代碼時出現運行時錯誤-438運行時錯誤 - 438

Sub Copy() 

Sheets("Sheet1").Range("A1:D20").Copy 

Sheets("Sheet2").Activate 

Range("E1").Select 

ActiveSheet.Paste 

Application.CutCopyMode = False 

End Sub 

回答

2

請嘗試以下代碼。你不應該依賴激活和選擇。

Sub ZCopy() 
    Sheets("Sheet1").Range("A1:D20").Copy 
    Sheets("Sheet1").Paste Destination:=Worksheets("Sheet2").Range("E1") 
    Application.CutCopyMode = False 
End Sub 

趣聞

  1. MSDN
  2. How to avoid using Select in Excel VBA macros
+0

它給了我錯誤說「成員已經存在於此目標模塊從中衍生的目標模塊中」 – taz

+0

看起來您已經有一個名稱已經存在於您的項目中的子集 –

+0

現在正常工作。 – taz

1

你有一份特別需要和粘貼?這可能很慢並且效率低下。如果您只是將數據從一張紙複製到另一張紙上,您可以將一個範圍的值設置爲等於另一個範圍的值,並避免整個事件。 Sheet 2上H20到那些在範圍A1相同的值::

Sheets("Sheet2").Range("E1:H20").Value = Sheets("Sheet1").Range("A1:D20").Value 

這將設置範圍從細胞E1 D20 Sheet 1上,這是一個有效的複製和粘貼。我應該補充說,這隻適用於價值本身。

如果您需要複製和粘貼特定的格式(或公式),則此方法無效。

+1

如果OP不需要格式或公式引用,這是一個更簡單的解決方案 –

相關問題