このサイトはCocoonを使っています。現在「ミックスブルー [作者: y.hiroaki氏]」スキンを適用中です(^^)/

Excel VBAマクロを連続実行させる方法(初心者向け解説5)

スポンサーリンク
くるみこ
くるみこ

マクロを「ボタン」に登録して実行する方法を説明したのを覚えていますか?
でも「ボタン」には一つのマクロしか登録できないんですよね(^^;

はい!覚えています。いくつかの方法があったと思います。
そういえば登録できたのはひとつだけでしたね!

その記事はこちらです↓ わからなくなったら前回の記事でおさらいしましょう

くるみこ
くるみこ

前回記事でわかった「マクロ」の実行方法は
・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」の後に「半角スペース」+「マクロ名」という記述方法です
・これで登録した「マクロ」をワンクリックで実行できるようになりました

Callステートメントとは

構文】[Call] name [argumentlist]
    引数nameは、呼び出すプロシージャ名です
    [Call] は[argumentlist]=省略可能です
・他のSubプロシージャなどを呼び出して制御を渡します
・[Call]は省略となっているので、で「Call Macro1」 と 「Macro1」 は同じく動作します

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)は実行後にファイルを保存すると元に戻すことはできません!
・実行後にファイルを保存せず終了すれば、実行前に戻すことができます!


ブログランキングに参加しています(^^)応援よろしくお願いしますm(_ _)m
にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

Visual Basicランキング

今後の記事について

今回の記事はいかがだったでしょうか。皆さまのお役に立てたなら幸いです(^^;
是非!サンプルファイルをダウンロード出来ますのでそのまま使ってみてください(^^)/
当面は今回の記事に続き「初心者向けマクロ」の記事を継続して書いていきます

【検討中の今後の記事内容は・・・・・】
・実務に役立つものを提供できるよう現在検討中です
・その他雑記的に「小ネタなどいろいろ」・・・・・
・今後の記事にご期待ください(^^)/

サンプルファイルをダウンロードできます(下記リンク先へ)

記事で使用したサンプルファイルがダウンロードできるページを設置しています
こちら(このリンク先)からご利用ください