• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:一行を他のシートの最終行に貼り付けたいのですが)

シート名「作業データ3」から「売上集計」への値の貼り付けエラー

このQ&Aのポイント
  • 質問者はシート名「作業データ3」のA2からUO2までの値をシート名「売上集計」のA2行目から順番に貼り付けたいが、エラーが発生している。
  • マクロを作成したが、実行時エラー「1004」が発生し、PasteSpecialメソッドが失敗している。
  • シートの保護が有効な状態で値のみを貼り付ける方法を知りたい。

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (788/1647)
回答No.1

パット見ですが、 Worksheets("作業データ3").Range("A2:UO2" & LstRow1).Copy はおかしいです。 文章の通り、A2からUO2まで、2行目だけをコピーしたいのなら、 Worksheets("作業データ3").Range("A2:UO2").Copy とすべきだし、2行目から最終行までコピーしたいのなら、 Worksheets("作業データ3").Range("A2:UO" & LstRow1).Copy とすべきです。これでは、最終行の前に2を付けた行までがコピーの対象になってしまいます。(例えば、100 行までデータがあれば、2100行まで対象になる) とりあえず、ここを直して動かしてみて下さい。 それでも動かない場合は、ワークブックそのものを見ないと何とも言えません。 どこかにアップロードしていただけたらと思います。 なお、値のコピーなら、このような書き方もあります。シートの選択をせずに、コピーできるので、何回もコピーするときは便利です。コピー先も範囲指定する必要があるので面倒ですが。 Worksheets("売上集計").Range("A" & LstRow2 + 1 & ":UO" & LstRow2 + LstRow1 - 1) = _   Worksheets("作業データ3").Range("A2:UO" & LstRow1).Value

shibushijuko
質問者

お礼

ご回答いただき、ありがとうございます。 ご指摘いただいた箇所を、ご指示通り変更して、コピー動作がうまくいくことを確認しました。 単純に一行だけのコピーなので、確かに LstRow1は不要だったんですね。どおりで、コピー後、複数行が選択された表示になっていたので、なにかおかしいと思っていました。 以下の通り修正しました。他のシートからマクロボタンを実行しても、売上集計にうまく一行だけコピーされました。 それと値だけのコピーはCopyだけで足りるんですね。 Worksheets("作業データ3").Range("A2:UO2").Copy Sub 売上集計保存() '変数の宣言 Dim LstRow1 As Long Dim LstRow2 As Long '最終行の取得 LstRow1 = Worksheets("作業データ3").Cells(Rows.Count, 1).End(xlUp).Row LstRow2 = Worksheets("売上集計").Cells(Rows.Count, 1).End(xlUp).Row 'タイトル行を除き、売上集計へコピー、貼り付け Worksheets("作業データ3").Range("A2:UO2").Copy Worksheets("売上集計").Select Worksheets("売上集計").Range("A" & LstRow2).Offset(1, 0).PasteSpecial xlPasteValues MsgBox "保存しました。" End Sub 度々、ありがとうございます。 m(_ _)m

関連するQ&A

専門家に質問してみよう