2016-12-16 17 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へのアクセスを持っていないし、いくつかのことを考えることができ、.PasteSpecialのxlPasteValuesに.Pasteを変更してみてください。ここでは、参照テーブルに関する参考資料/ガイドがあります。 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 
関連する問題