マクロの中で別のマクロを実行する

マクロを記録している途中で別のマクロを実行することができます。この場合、別のマクロの実行もマクロとして記録されます。ここでは Excel のマクロの中で既に記録済みの別のマクロを実行する方法について解説します。

(2022 年 06 月 22 日公開 / 2022 年 06 月 22 日更新)

マクロの中から別のマクロを実行する

マクロを記録している途中で別のマクロを実行することができます。例えばあらかじめ「背景色設定」というマクロを作成してあります。このマクロを実行すると選択していた範囲の背景と罫線を設定します。

マクロの中から別のマクロを実行する(1)

マクロの中から別のマクロを実行する(2)

今回は別のマクロを記録している中で、「背景色設定」というマクロを実行してみます。それではシートに次のようなデータを入力した上で全体を選択した状態から開始します。

マクロの中から別のマクロを実行する(3)

「表示」タブをクリックし、そのあとで「マクロ」をクリックします。そして表示されたメニューの中から「マクロの記録」をクリックしてください。

マクロの中から別のマクロを実行する(4)

マクロの中から別のマクロを実行する(5)

「マクロの記録」ダイアログが表示されます。新しく記録するマクロの名前を入力しあとで「OK」をクリックしてください。マクロの記録が開始されます。

マクロの中から別のマクロを実行する(6)

最初に事前に作成してある別のマクロを実行してみます。「表示」タブをクリックし、そのあとで「マクロ」をクリックします。そして表示されたメニューの中から「マクロの表示」をクリックしてください。(今回は最初に別のマクロを実行しますが、いつ実行しても構いません)。

マクロの中から別のマクロを実行する(7)

「マクロ」ダイアログが表示されます。実行するマクロ名をクリックして選択したあと「実行」をクリックしてください。

マクロの中から別のマクロを実行する(8)

マクロが実行されて背景色と罫線が設定されます。

マクロの中から別のマクロを実行する(9)

次にフォントの変更を行います。

マクロの中から別のマクロを実行する(10)

マクロの中から別のマクロを実行する(11)

これで記録する操作は完了です。マクロの記録を終了するために「表示」タブをクリックし、「マクロ」をクリックしてから「記録終了」をクリックしました。

マクロの中から別のマクロを実行する(12)

今回記録したマクロは、別のマクロをまず実行して背景や罫線を設定したあと、グラフを作成して表示する、というマクロになります。

-- --

それでは先ほど記録したマクロを実行してみます。次のようにあらかじめ入力したデータを選択してからマクロを実行してください。

マクロの中から別のマクロを実行する(13)

マクロの中から別のマクロを実行する(14)

マクロが実行されて、背景と罫線の設定が終わったあとでフォントの設定も実行されました。

マクロの中から別のマクロを実行する(15)

このようにマクロを記録している途中で別のマクロを実行すると、別のマクロを実行することも含めてマクロに記録されます。

マクロの中から別のマクロを実行するのはどのように記録されているか

マクロの中から別のマクロを実行するのはどのように記録されているのかを確認してみます。「マクロ」ダイアログを表示したあと、対象のマクロをクリックして選択したあと「編集」をクリックしてください。

マクロの中から別のマクロを実行するのはどのように記録されているか(1)

VBE が起動してマクロがどのように VBA を使って記録されているのかが表示されます。

マクロの中から別のマクロを実行するのはどのように記録されているか(2)

今回記録したマクロは次のようになっており、最初の部分で別のマクロを実際に実行していることが分かります。

Sub 表示調整()
'
' 表示調整 Macro
'

'
    Application.Run "社員データ.xlsm!背景色設定"
    With Selection.Font
        .Name = "游ゴシック"
        .Size = 16
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontMinor
    End With
End Sub

別のマクロの内容をコピーしているわけではないので、マクロの中から実行している別のマクロの内容がもし変更された場合、このマクロを実行したときの結果も変わってくるので注意が必要です。

-- --

Excel のマクロの中で既に記録済みの別のマクロを実行する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。