「みんな教えて! 選手権!!」開催のお知らせ

エクセルである業務を簡便化させるために一つのマクロボタンを作ったとして、その次の業務をするためにまた別の第二の作業マクロボタンを作り、また同じブックではあるが別なシートなどに移ったりなどして第三の作業のマクロボタンをつくって 最終的にそれらのマクロボタンを使った結果データを用いて最終結果を出したい。このように一つ一つボタンを押して終了させた場合は最終結果まで行きつけるのだが、一連の業務を一括で終えるために複数のマクロボタンを押すことを一つのマクロボタンに記憶させてそれでやらせようとすると途中で止まってしまうが、どうしてなのか。またそれらを解決するにはどうすればいいか。

A 回答 (4件)

こんにちは



質問者様の頭の中では「ボタンと処理」が同じものになってしまっているようですが、実際に処理を行っているのはボタンではなく、マクロといわれるプログラムの一種です。
このマクロを、ボタンに登録(紐づけ)しておくことで、ボタンを押したときにそのマクロが実行されるようになります。(紐づけを変えれば、別のマクロが動くようにもなります)

例えば、「ボタン1」にマクロ1が登録され、「ボタン2」にはマクロ2が・・・という状況で、新しく作成した「ボタン全部」を押したときにマクロ1~マクロ10を順に実行させたいといった場合を考えてみると、
(マクロ1~マクロ10はすでに作成されているものとします)

「ボタン全部」をクリックした際に実行されるマクロの内容を
 Sub ボタン全部のマクロ()
   Call マクロ1
   Call マクロ2
    ・・・
   Call マクロ10
 End Sub
といったようにしておくことで、マクロ1~10が順に実行されるようになります。

もちろん、それぞれのマクロを編集してひとつのマクロにしておくといった方法でも実現は可能です。
    • good
    • 1

> 途中で止まってしまうが、どうしてなのか。



例えば、
Sheet1にボタンAがあって、押された時にActiveSheet(ボタンのあるSheet1)のセルを処理する。
Sheet2にボタンBがあって、押された時にActiveSheet(ボタンのあるSheet2)のセルを処理する。
Sheet1からボタンBのマクロを呼び出すと、ActiveSheetがSheet1なのに、Sheet2の処理を行なおうとして失敗。
だとか。


> またそれらを解決するにはどうすればいいか。

途中まで実行されるなら、その処理にブレークポイントを設定、ステップ実行して止まる個所を特定して原因を推測し、VBAを修正する。
上のような原因なら、シートやセルの指定を絶対指定にするとか。
    • good
    • 0

エクセルのマクロは、実際のところ「ExcelVBA」というプログラムに展開できます。


ExcelVBAは、テキストファイルとして編集可能です。
ですから、それぞれのマクロボタンに対応したExcelVBAプログラムを1連で実行されるように編集したらいいのです。
そのためには、ExcelVBAの文法とか、「プログラムはどう作るのが良いのか?」という知識やOSであるWindowsの知識も当然要求されます。

>>複数のマクロボタンを押すことを一つのマクロボタンに記憶させてそれでやらせようとすると途中で止まってしまう

No.1さんの回答のとおり。
ただ、ExcelVBAプログラムで作成すれば、うまくいかない部分でエラーが出て停止するとか、望む結果にならずに終了するとか、とりあえず問題箇所が明確になるので、次に進むことが容易になります。
    • good
    • 1

1つ目のマクロが終了したら2つ目のマクロを実行し、


2つ目のマクロが終了したら3つ目のマクロを…

のように順次マクロを実行するマクロを作って、それをボタンに割り付ければ良いと思います。
そんなの嫌だということであれば、マクロを実行する順番を覚えさせるときに待ち時間(Wait)を挿入してみましょう。

・・・
てか、マクロを1つに編集すれば良いと思うんだ。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A