2017-06-17 15 views
-3

シート1の特定の範囲のアクティブセルから内容を切り取り、シート2のその範囲のアクティブセルに貼り付ける必要があります。しかし、ペーストオプションでは、アプリケーション定義またはオブジェクト定義エラーとして実行時エラー1004が発生しています。ここで実行時エラー1004 CutとPasteSpecialを使用する場合

は、私が使用していたコードです:

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

"しかし、私はレコードのマクロ機能を使用し、それはそれが何を言ったのか" - はい、それは必ずしもそれを行う最良の方法ではありません... –

0

私はあなたのコードをテストしていると、あなたはコピーの代わりにカットを使用している場合PasteSpecialのみ機能のように見えるので、あなたは、このようにコードを修正する必要があります、あなたはシート1のデータを削除する必要がある場合

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

PasteSpecialの後にそれを行います。

関連する問題