2017-06-17 114 views
-3

我必須從活動單元格中剪切片材1中特定範圍的內容並將其粘貼到片材2中該範圍的活動單元格中。剪切特定範圍的內容時工作正常,但在粘貼選項中,我得到運行時錯誤1004作爲應用程序定義或對象定義的錯誤。使用剪切和粘貼時的運行時錯誤1004

這裏是我使用的代碼:

Sub sheet1_sheet2_copy_click() 
    Sheets("sheet1").Activate 
    ActiveCell.Resize(1, 26).Cut 
    Sheets("sheet2").Activate 
    ActiveCell.Resize(1, 26).PasteSpecial 
End Sub 
+0

你爲什麼想要調整大小?你只想要單元格的價值,還是格式重要呢? – SandPiper

+0

請下次使用與您的特定問題相關的標題,而不是重複標籤。 –

回答

0

我個人認爲,使用活動單元格的源和目標是相當不可靠的,但如果你改變了貼線activesheet.paste它應該工作的罰款。

1

你的問題有點不清楚,但你可以嘗試這樣做:更重要的是

Sub sheet1_sheet2_copy_click() 

Sheets("sheet1").Cells(1, 26).Cut 
Sheets("sheet2").Cells(1, 26).PasteSpecial Paste:=xlPasteValues 

End Sub 

,你可以這樣做:

Sub sheet1_sheet2_copy_click() 
    Sheets("sheet2").Cells(1, 26).value = Sheets("sheet1").Cells(1, 26).Value 
End Sub 

在一般情況下,最好是不要使用.Activate.Select,而是明確定義您的引用,如我所示。將Paste:=修改爲您嘗試用於PasteSpecial的任何參數。

有關此命令的更多信息,請參閱https://msdn.microsoft.com/VBA/Excel-VBA/articles/range-pastespecial-method-excel

+0

「但我使用了記錄宏功能,這就是它所要做的 - 」是的,但這並不一定是最好的方式來做到這一點...... – 2017-06-17 23:10:34

0

我已經測試你的代碼,它看起來就像如果你使用複製,而不是切PasteSpecial的唯一工作,所以你應該修改你的代碼是這樣的:

Sheets("sheet1").Activate 
ActiveCell.Resize(1, 26).Copy 
Sheets("sheet2").Activate 
ActiveCell.Resize(1, 26).PasteSpecial 

如果您需要從sheet1中刪除數據,然後在PasteSpecial之後執行。