2016-12-16 27 views
0

你好,我是VBA和stackoverflow的新手。運行時錯誤'1004'ActiveSheet.Paste到表失敗

我的程序只是選擇Table1並將其複製到Table2的末尾。代碼如下。

Sub c_p() 



    Application.Goto Reference:="Table1" 
    Selection.Copy 
    Application.Goto Reference:="Table2" 
    Selection.End(xlToRight).Select 
    Selection.End(xlDown).Select 
    Selection.ListObject.ListRows.Add AlwaysInsert:=False 
    ActiveSheet.Paste 


End Sub 

當我運行程序,它提供了 「運行時錯誤 '1004'」。在此行中的錯誤:

ActiveSheet.Paste 

據我所知,有更好的方法去這比使用的選擇,雖然這些都是對我有意思我也想知道這個問題的原因。

謝謝你的幫助。

+0

我沒有在時刻訪問Excel和能想到的一些東西,嘗試改變.Paste到.PasteSpecial xlPasteValues。這是關於引用表的很好的參考/指南。 https://www.thespreadsheetguru.com/blog/2014/6/20/the-vba-guide-to-listobject-excel-tables –

+0

是不是受保護的工作表? –

+0

粘貼前你不需要指定範圍嗎?那麼'Activesheet.Selection.Paste'呢? (另外,最好[避免使用'.Activate' /'.Select'](https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) – BruceWayne

回答

1

您複製數據後,您的問題似乎與「Selection.ListObject.ListRows.Add AlwaysInsert:= False」。這似乎導致系統「忘記」複製的數據。

這可能是一個適當的解決方案

Sub c_p() 
    Application.Goto Reference:="Table1" 
    Selection.Copy 
    Application.Goto Reference:="Table2" 
    Selection.ListObject.ListRows.Add AlwaysInsert:=False 
    Application.Goto Reference:="Table2" 
    Selection.End(xlToRight).Select 
    Selection.End(xlDown).Select 
    ActiveSheet.Paste 
End Sub 
1

謝謝很多

你是正確的,該系統忘了複製的數據..

有關代碼 - 您的更改沒有幫助與被遺忘的信息,但有一些修改它很好。

這裏是最終代碼:

Sub c_p2() 

    Application.Goto Reference:="Table2" 
    Selection.ListObject.ListRows.Add AlwaysInsert:=False 
    Application.Goto Reference:="Table1" 
    Selection.Copy 
    Application.Goto Reference:="Table2" 
    Selection.End(xlDown).Select 
    Selection.End(xlDown).Select 
    ActiveSheet.Paste 
End Sub 
相關問題