• ベストアンサー

ExcelVBA:ワークシートに付けたコマンドボタンから、セル全体をコピーするコード

ExcelVBAでワークシートに付けたコマンドボタンを押すと、ワークシートを指定し、コピーするプログラムを作りたいのですが、「実行時エラー'1004':RangeクラスのSelectメソッドが失敗しました。」というようなエラーが出て動きません。 プログラムは以下の通りです。 Private Sub CommandButton1_Click() Sheets("Sheet1").Select Cells.Select Selection.Copy End Sub どのようにすればよいでしょうか? 回答よろしくお願いします。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

どんな目的でこのマクロを実行するのか分かりませんが、以下にすればエラーにはなりません Private Sub CommandButton1_Click()  Sheets("Sheet1").Cells.Copy End Sub でもシート全体をコピーするのではなく必要な範囲をコピーする方がよいようにも思いますが…

miya_HN
質問者

お礼

目的は、データを元に新規作成し、そこに元のデータと加工したデータをワークシートに貼り付けるという作業をプログラムで作りたいということです。 Sheets("Sheet1").Cells.Copy この方法なら、エラーが出ずにプログラムが動きますね。 シート全体をコピーするのはそのときによって範囲が変わってしまうので、どうせなら全体をコピーした方がいいかなぁと思いました。 大変参考になりました。 ありがとうございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

マクロの記録はどうしたの。マクロの記録など相手にしないレベルですか。 Sub Macro1() Cells.Select Selection.Copy Sheets("Sheet2").Select ActiveSheet.Paste End Sub と出たけど、これでは都合が悪いのかな。 質問する前に、マクロの記録を取れるものは採って、それではうまくいかないとか、そういう風な話の持って行き方・考え方が良いのではないですか。 ーー ただしシートのコピーなど似たようなkとは色々できそうですが。

miya_HN
質問者

お礼

imogasiさんのおっしゃる通り、質問の前にマクロを実行してそれを元にプログラムを作りました。それでプログラムを走らせたところ、エラーが出てしまいました。 この部分の話が抜けてましたね。 ありがとうございました。

  • xcode_15
  • ベストアンサー率18% (19/102)
回答No.2

「ExcelVBAでワークシートに付けたコマンドボタンを押す」とは、Sheet1をもコピーする事ではないよね。 Sheet1も対象にすると、動かしているプログラム自信をもコピーする事になるので、可笑しくありませんか?

miya_HN
質問者

お礼

今更ですが、お礼の記載が大変遅くなり、申し訳ありません。 ありがとうございました。

関連するQ&A