マクロを「ボタン」に登録して実行する方法を説明したのを覚えていますか?
でも「ボタン」には一つのマクロしか登録できないんですよね(^^;
はい!覚えています。いくつかの方法があったと思います。
そういえば登録できたのはひとつだけでしたね!
その記事はこちらです↓ わからなくなったら前回の記事でおさらいしましょう
前回記事でわかった「マクロ」の実行方法は
・ActiveXコントロールの「コマンドボタン」から実行する
・フォームコントロールの「ボタン」から実行する
・図形などの「ボタン」から実行する
今回は、「マクロ」連続で実行させる方法について解説していきましょう!
【この記事でわかること】
・ActiveXコントロールの「コマンドボタン」から連続実行する方法がわかります
・「Call」ステートメントで「マクロ」を連続で実行する方法がわかります
・「マクロ」の中から「マクロ」呼び出して実行させる方法がわかります
・新しいプロシージャを作って連続実行する方法がわかります
記事で使用したサンプルファイルはこのリンク先からダウンロードできます
ActiveXコントロールの「コマンドボタン」から実行する方法
以前の記事ではActiveXコントロールの「コマンドボタン」から実行する方法についての詳細は「別途解説します」としていました。それは、ここから「マクロ」を実行させるには「マクロ」を呼び出すコードを書かなくてはいけなかったからです
ActiveXコントロール「コマンドボタン」の設置方法
ActiveXコントロール「コマンドボタン」は「開発」タブから設置します。その方法を説明します
・すると、下の画像のようにVBE(Visual Basic Editer)が開きます
・よく見ると「Private Sub CommandButton1_Click()」の下にカーソルがあります
・ここにコードを入れろというわけです
・「Private Sub CommandButton1_Click()」は「CommandButton1」をクリックするとこの場所に飛んできます
・だからここに実行させるコードを記述しておけば「クリック」で「マクロ」が実行されます
・先頭の「Sub」から「End Sub」までがひとつの「マクロ」です。今は何も書かれていませんので何も起こりませんが、記述されればそれが1つの機能を持った「マクロ」になります。VBAではこの1つの「マクロ」をプロシージャといいます
プロシージャ とは、プログラミングにおいて複数の処理を一つにまとめたものをいう。手続きとするのが定訳である。一連の処理を意味を持った一まとまりにすることで、再利用性が高まり、プログラム中に繰り返して現れる処理を1ヶ所で記述でき、プログラムの保守、管理を容易にする。 繰り返し利用されることから、ルーチンとも言う。
引用元:ウィキペディア
マクロ呼び出しはCallステートメントを使う
・それでは、ここに自動記録した「マクロ」を呼び出すコードを書きましょう
・「Call Macro1」 たったこれだけです
Private Sub CommandButton1_Click()
Call Macro1
End Sub
・「Call」はそのまま「呼ぶ」という意味です
・「Call」の後に「半角スペース」+「マクロ名」という記述方法です
・これで登録した「マクロ」をワンクリックで実行できるようになりました
ActiveXコントロール「コマンドボタン」の編集方法
・ActiveXコントロール「コマンドボタン」の面倒なところは、ボタンの表示名を変更したり色を変えたり編集するのが面倒なところです
・編集は「プロパティー」を呼び出して行います
・最初の右側画像のように「デザインモード」が選択されている必要があります
・その状態で「ボタン」を右クリックメニューの「プロパティ」選択で表示されます
(左の画像)
・BackColor で背景色を変更できます
・Caption がボタンに表示される文字列です
ここでボタンの表記を変更します
・WordWrap が文字列の折り返し設定です
「マクロ」を連続で実行する方法
・「マクロ」を連続実行させていく方法はいくつかありますので見ていきましょう
Callステートメントで連続実行
Option Explicit
'マクロ連続実行テスト
Private Sub CommandButton1_Click()
Call Macro1
Call Macro2
Call Macro3
Call Macro4
Call Macro5
Call Macro1_改
Call Macro2_改
Call Macro3_改
Call Macro4_改
Call Macro5_改
End Sub
・「CommandButton1」をクリックするとこのコードが実行されます
・途中に10個の「Call」ステートメントで「マクロ」を呼び出しています
・「Call」で呼び出したプロシージャ(マクロ)に制御が移り「マクロ」のコードを実行します
・その後、制御が戻ってきますが次の「Call」ステートメントへと処理を移動していきます
・最後の「マクロ」から制御が戻ってきて「End Sub」で完了となります
・呼び出す「マクロ」の順番を入れ替えれば、入れ替えたとおりに実行します
それぞれの「マクロ」内に「Call」ステートメントを埋め込む
・「Call」ステートメントはプロシージャ内のどこにでも入れることが出来ます
・例えば「Call」ステートメントで「Macro1」を呼び出します
・「Macro1」のコード内に「Macro2」を呼び出す「Call」ステートメントを入れておけば
・「Macro1」→「Macro2」と順番に実行させることが出来ます
呼び出し用のプロシージャを作る
・ActiveXコントロールの「コマンドボタン」クリックで発生する「CommandButton1_Click」というイベントプロシージャに「Call」ステートメントを入れて連続実行しました
・では、ActiveXコントロールの「コマンドボタン」以外から連続実行させる場合はどうしたらよいのでしょう
・一つ前の段で解説した「マクロ」に埋め込む方法でも良いのですが、新たに呼び出し用のプロシージャを作成してしまえばよいのです
新しいプロシージャを作成する
プロシージャの構文は次のとおり
Sub プロシージャ名()
End Sub
・「Sub」で始まり「End Sub」で終わります
・この間に「Call」ステートメントを記述します
・「CommandButton1_Click」というイベントプロシージャからコピペしても良いでしょう
・プロシージャ名はアルファベット、ひらがな、漢字などが使えます
・アンダーバーは使えますが記号やスペースなどは使えません
・記述が正しくない場合は、コンパイルエラーになりますのですぐにわかります
「ボタン」に新しく作ったプロシージャを登録する
・作った新しいプロシージャを「ボタン」の「マクロ登録」に登録します
・これで「ボタン」からも「マクロ」連続実行が可能になりました
「マクロ」連続実行する方法がよくわかりました!
いろいろ試してみたいと思います(^^)
そうだよね!いろいろ試してみることが大事だよね(^^)
そして疑問に思ったことを自分で調べることがスキルアップにつながるんだよ!
・今回はここまでで終了です!
・この続きは次回記事まで少しお待ちください・・・・
・次は「ステップ実行でプログラムの動きをチェックする」方法を紹介したいと思っています
・是非ご期待ください(^^)/
まとめ(おわりに)
まとめと感想など
・ActiveXコントロールの「コマンドボタン」から実行する方法がわかりました
・「マクロ」を連続実行する「Call」ステートメントの使い方がわかりました
・「マクロ」の中から「マクロ」呼び出して実行させる方法も知りました
・新しいプロシージャのつくり方がわかりました
・「ボタン」に登録する「マクロ」は、新しいプロシージャを作って登録すれば連続実行できることがわかりました
・マクロ(VBA)を実行する際は必ずバックアップを取ってから行ってください!
・マクロ(VBA)は実行後にファイルを保存すると元に戻すことはできません!
・実行後にファイルを保存せず終了すれば、実行前に戻すことができます!
★★★ ランキング参加中! クリックしてね(^^)/ ★★★
今後の記事について
今回の記事はいかがだったでしょうか。皆さまのお役に立てたなら幸いです(^^;
是非!サンプルファイルをダウンロード出来ますのでそのまま使ってみてください(^^)/
当面は今回の記事に続き「初心者向けマクロ」の記事を継続して書いていきます
【検討中の今後の記事内容は・・・・・】
・実務に役立つものを提供できるよう現在検討中です
・その他雑記的に「小ネタなどいろいろ」・・・・・
・今後の記事にご期待ください(^^)/