• ベストアンサー

エクセルのVBAのことで

コマンドボタンで「Macro1」というマクロを実行させるVBAは以下だと思いますが。 Private Sub CommandButton1_Click() Call Macro1 End Sub 上記に、Sheet1・Sheet2・Sheet3に対して実行するということを加えると、どんなふうになるでしょうか。

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

  • ベストアンサー
  • coco1
  • ベストアンサー率25% (323/1260)
回答No.2

呼び出されたマクロ、Macro1の中に必要な処理を記述すればよいのです。 sub macro1 sheet1.activate ... sheet2.activate ... end sub ってな具合に。

wrgudl
質問者

お礼

ありがとうございます。 Sheet1・Sheet2・Sheet3それぞれにコマンドボタンを二つ貼り付けて、コマンドボタン1でMacro1を自シートのみに実行して、コマンドボタン2で3つのシートに対してMacro1を実行させるようにしたいのですが。

その他の回答 (4)

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

>Sheet1・Sheet2・Sheet3それぞれにコマンドボタンを二つ貼り付けて、コマンドボタン1でMacro1を自シートのみに実行して、コマンドボタン2で3つのシートに対してMacro1を実行させるようにしたいのですが。--> これだけ補足頂いても、#1の方がおっしゃるように、何をMacro1でしたいかを具体的に示して頂かないと、 一般的な答えで済むタイプの質問ではないと思います。 一般にマクロはシートごとに登録されるのでなく、標準モジュールに作ったものは、ブック単位で保存され、(他ブックでも使えるようにと言う質問ならそれで質問として成り立ちますが)各シートに対して使えます。 しかしWorkShhets("Sheet1")とかのように、シート名を 指定したり(このケースが多い)して、効果や作用が及ぶ範囲を指定するものや、中には Sheets(Array("Sheet2", "Sheet3")).Select ActiveWindow.SelectedSheets.Delete のように複数シート指定もあります。 ActiveSheet、SelectedSheetなどで、具体的にコード上では指定せず、一般化することもあります。 Worksheets("Sheet1")の部分を実行時に変化させたものを指定することも可能です。 要はMacro1で処理したいことが、Sheet(名)や具体的シートごとのセル番地と係わった処理でないか、係わっているなら、それに対処したプログラムの組み方が出来ているかが難しいのですが、それが質問では述べられていません。係わっているならMacro1を実行する前にSheet名等を指定するコードを入れて、Macro1を記述すれば良いだけになります。

wrgudl
質問者

お礼

ありがとうございます。

  • oui1012
  • ベストアンサー率25% (25/97)
回答No.4

あー,それでいけると思いますよ! まずはいろいろ試してみてください~

wrgudl
質問者

お礼

ありがとうございます。 先ほど示したものでうまくいきました。

  • oui1012
  • ベストアンサー率25% (25/97)
回答No.3

#1です. >Sheet1・Sheet2・Sheet3それぞれにコマンドボタンを二つ貼り付けて、 >コマンドボタン1でMacro1を自シートのみに実行して、 >コマンドボタン2で3つのシートに対してMacro1を実行させるようにしたいのですが。 …だとすると,Macro1内で どのボタンが押されたのか,という処理分岐が必要です. あるいは,アクティブページだけを処理するMacro1と, すべてのページを処理するMacro2を作成するのも手です. 共通ロジックは関数にでもして外出ししましょう.

wrgudl
質問者

お礼

ありがとうございます。 >…だとすると,Macro1内で >どのボタンが押されたのか,という処理分岐が必要です. 以下のように、Macro1自体はそのままというのは無理なのでしょうか。 Private Sub CommandButton1_Click() Call Macro1 End Sub Private Sub CommandButton2_Click() Sheet1.Activate Call Macro1 Sheet2.Activate Call Macro1 Sheet3.Activate Call Macro1 End Sub

  • oui1012
  • ベストアンサー率25% (25/97)
回答No.1

"Sheet1・Sheet2・Sheet3に対して実行する"って 何を実行するのでしょうか? Sheet1のセルに対して処理を行い, Sheet2のセルに対して処理を行う…ってことでしょうか?? だとしたら,後はMacro1の中の記述で 各シートに対する処理を記述するだけなのですが.

wrgudl
質問者

お礼

ありがとうございます。 Sheet1・Sheet2・Sheet3それぞれにコマンドボタンを二つ貼り付けて、コマンドボタン1でMacro1を自シートのみに実行して、コマンドボタン2で3つのシートに対してMacro1を実行させるようにしたいのですが。

関連するQ&A

専門家に質問してみよう