目次

Alt + F8 キー

今回の投稿では、 Excel (エクセル)のマクロをキーボードのショートカットキーから実行する方法を記載しています。具体的には、「Alt + F8」のショートカットキーからマクロの実行が可能なようです。私の使用している Excel のバージョンは「Excel 2003」と少し古いですが、良ければ参考にご覧ください。

「Alt + F8」のショートカットキーからマクロの実行が可能です。
「Alt + F8」のショートカットキーからマクロの実行が可能です。

目次まで戻る

マクロの実行方法

「Alt + F8」のショートカットキーからマクロを実行する方法を以下に掲載しています。 Step.1 ~ 3 まであります。

Step.1

マクロが含まれていると思われるワークブックで「Alt + F8」のショートカットキーを押してみます。

マクロが含まれているワークブック。
マクロが含まれているワークブック。

Step.2

そうすると、実行可能なマクロが一覧で表示されると思います。一覧の中に「マクロ1」という名前のマクロが存在しているようですね。

一覧から「マクロ1」を選んで、右上の「実行」ボタンを押してみます。

実行可能なマクロが一覧表示されています。
実行可能なマクロが一覧表示されています。

Step.3

「実行」ボタンを押すと、「マクロ1」が実行されて、以下の画像のメッセージボックスが表示されました。

「マクロ1」が実行されました。
「マクロ1」が実行されました。

目次まで戻る

Private Sub

次は違うパターンを試してみます。以下のマクロをワークブックに保存してみました。

Sub A()
MsgBox "「A」を実行しました。"
End Sub

Public Sub B()
MsgBox "「B」を実行しました。"
End Sub

Private Sub C()
MsgBox "「C」を実行しました。"
End Sub

上記、「A」「B」「C」のマクロがワークブックに保存されている場合、「A」「B」は、「Alt + F8」のショートカットキーから実行可能です。

「C」は、「Alt + F8」のショートカットキーから直接は実行出来ず、他のマクロから呼び出して実行するマクロになっています。「A」「B」との違いは、「Sub」の前に「Private」が記述されている部分です。

「Private Sub」から始まるマクロは「Alt + F8」で表示されるマクロの一覧にも表示されないようです。文字通りプライベートなマクロになっているようです。

上記のマクロが保存されているワークブックで「Alt + F8」のショートカットキーを押すと、以下の画像のように、マクロ「A」「B」のみが表示されると思います。

マクロ「A」「B」のみが表示されています。
マクロ「A」「B」のみが表示されています。

マクロ「C」を実行したい場合は、別のマクロから呼び出して実行するようになると思います。

上のマクロのコードの末尾に以下のコードを追加してみます。「Call C」の記述でマクロ「C」を呼び出して実行しています。

Sub D()

Call C
MsgBox "「D」を実行しました。"

End Sub

上のマクロ「D」を実行すると、以下の画像のように、メッセージボックスが 2 回表示されました。マクロ「C」が実行されたようです。

マクロ「C」を実行しました。
マクロ「C」を実行しました。
マクロ「D」を実行しました。
マクロ「D」を実行しました。

目次まで戻る

別のブックのマクロ

今度は、別のブックに保存されているマクロを「Alt + F8」から実行可能かを試してみます。

まずは、「Book1」と「Book2」を開いておきます。

Book1とBook2を開いた状態です。
Book1とBook2を開いた状態です。

「Book1」に以下のマクロを保存しておきます。

Sub BOOK1_A()
MsgBox "「BOOK1_A」を実行しました。"
MsgBox "アクティブなワークブックは " & ActiveWorkbook.Name & " です。"
End Sub

Public Sub BOOK1_B()
MsgBox "「BOOK1_B」を実行しました。"
MsgBox "アクティブなワークブックは " & ActiveWorkbook.Name & " です。"
End Sub

Private Sub BOOK1_C()
MsgBox "「BOOK1_C」を実行しました。"
MsgBox "アクティブなワークブックは " & ActiveWorkbook.Name & " です。"
End Sub

「Book2」に以下のマクロを保存しておきます。

Sub BOOK2_A()
MsgBox "「BOOK2_A」を実行しました。"
MsgBox "アクティブなワークブックは " & ActiveWorkbook.Name & " です。"
End Sub

Public Sub BOOK2_B()
MsgBox "「BOOK2_B」を実行しました。"
MsgBox "アクティブなワークブックは " & ActiveWorkbook.Name & " です。"
End Sub

Private Sub BOOK2_C()
MsgBox "「BOOK2_C」を実行しました。"
MsgBox "アクティブなワークブックは " & ActiveWorkbook.Name & " です。"
End Sub

「Book1」を選択した状態で、「Alt + F8」のショートカットを実行してみます。

そうすると、以下の画像のように、「Book2」に保存しておいたマクロ「BOOK2_A」「BOOK2_B」も表示されて実行できる状態になっています。

まずは、「BOOK1_A」のマクロを実行してみます。

「Book2」に保存しておいたマクロが表示されている。
「Book2」に保存しておいたマクロが表示されている。

「BOOK1_A」のマクロを実行してみると、以下の画像のメッセージボックスが連続して表示されました。

「Book1」を選択した状態で、マクロを実行したので、アクティブなワークブックは「Book1.xls」になっているようです。

「BOOK1_A」を実行しました。
「BOOK1_A」を実行しました。
アクティブなワークブックは Book1.xls です。
アクティブなワークブックは Book1.xls です。

次は、「Book1」を選択した状態で、「BOOK2_A」のマクロを実行してみます。

「BOOK2_A」のマクロを実行してみます。
「BOOK2_A」のマクロを実行してみます。

そうすると、以下の画像のメッセージボックスが表示されました。「Book1」を選択した状態で「Book2」にあるマクロを実行したので、アクティブなワークブックは「Book1.xls」となっているようです。

「BOOK2_A」を実行しました。
「BOOK2_A」を実行しました。
アクティブなワークブックは Book1.xls です。
アクティブなワークブックは Book1.xls です。

目次まで戻る

どんなマクロが保存されている?

ワークブックに保存されているマクロの存在を調べる場合は、「Alt + F11」のショートカットを実行してみます。

ワークブックに保存されているマクロを調べる方法を以下に記載しています。 Step.1 ~ 3 まであります。

Step.1

マクロが含まれていると思われるワークブックで「Alt + F11」のショートカットを実行してみます。今回は、例として「Book1」上で実行してみます。

マクロが含まれていると思われるワークブックです。
マクロが含まれていると思われるワークブックです。

Step.2

そうすると、別ウィンドウで以下のような画面が表示されると思います。このウィンドウは VBE( Visual Basic Editor )と云うものです。

VBE( Visual Basic Editor )が起動しました。
VBE( Visual Basic Editor )が起動しました。

Step.3

VBE の左側のウィンドウに以下のようなリストが表示されていると思います。左側のウィンドウは「プロジェクトエクスプローラー」という名前です。

[ - ] VBA Project ( Book1 ) '---(1)
    [ - ] Microsoft Excel Objects '---(2)
        Sheet1 ( Sheet1 ) '---(3)
        Sheet2 ( Sheet2 ) '---(4)
        Sheet3 ( Sheet3 ) '---(5)
        ThisWorkbook '---(6)
    [ - ]標準モジュール '---(7)
        Module1 '---(8)

'---(1) から '---(8) の説明を以下に記載しています。

[ - ] VBA Project ( Book1 ) '---(1)

ワークブック 1 つにつき、 1 つの「VBA Project」(ブイビーエー プロジェクト)階層が存在しているようです。フォルダのようなものなので、これ自体には、マクロは記述されていないと思います。

[ - ] Microsoft Excel Objects '---(2)

ワークブック 1 つにつき、 1 つの「Microsoft Excel Objects」(マイクロソフト エクセル オブジェクト)階層が存在しているようです。フォルダのようなものなので、これ自体には、マクロは記述されていないと思います。

Sheet1 ( Sheet1 ) '---(3)

ワークブックに存在するワークシートの数だけ存在する「ワークシートオブジェクト」というものです。オブジェクトとは、パソコンのメモリ上にある物体のようなものでしょうか。 Excel の内部的には、オブジェクトという形式でもワークシートの存在を把握しているようです。

ワークシートオブジェクトには、マクロを設定可能なので、マクロが記述されているかもしれません。

プロジェクトエクスプローラーの中の「Sheet1 ( Sheet1 )」をダブルクリックすると、右側のウィンドウにマクロのコードが記述されているかもしれません。右側のウィンドウは「コード ウィンドウ」という名前です。

ワークシートオブジェクトに設定されているマクロの例です。
ワークシートオブジェクトに設定されているマクロの例です。

右側のウィンドウに下記のマクロが記述されていますね。

Private Sub Worksheet_Activate()

MsgBox "Worksheet_Activate イベント発生"

End Sub

上のマクロは、ワークシートがアクティブになった時に実行するマクロになっています。 Excel がワークシートの「Activate」イベントの発生を捕捉して、自動的にマクロが実行されます。

「Sheet1(Sheet1)」に設定されているマクロなので、ワークシート「Sheet1」がアクティブになるとマクロが自動で実行されると思います。「Sheet1」以外のワークシートを選択して、「Sheet1」を選択し直すとメッセージボックスが表示されると思います。

「Sub」ではなく「Private Sub」から始まるマクロは、「Alt + F8」からは実行出来ないようです。「Alt + F8」で表示されるマクロの一覧リストにも表示されないようです。「Private Sub」から始まるマクロは、マクロから呼び出すマクロということになるようです。

ユーザーからは、「Sheet1」「Sheet2」「Sheet3」の見出しのワークシートのみが存在しているように見えますが、 Excel 側から見ると「Sheet1」「Sheet2」「Sheet3」をオブジェクトとしても認識しているようです。

「Book1」には「Sheet1」「Sheet2」「Sheet3」が存在しています。
「Book1」には「Sheet1」「Sheet2」「Sheet3」が存在しています。

「Sheet1(Sheet1)」のカッコ内の文字は、ワークシートの見出しの名前になっています。カッコの前の文字は「オブジェクト名」というもので、 Excel の内部的にワークシートに名前が付いているようです。

ワークシートの見出しの名前を「A」「B」「C」と変更すると、オブジェクト名は変化せずカッコ内の文字が変更されると思います。

ワークシートの見出しの名前を「A」「B」「C」に変更しました。
ワークシートの見出しの名前を「A」「B」「C」に変更しました。

以下のようにカッコ内の文字が変更されました。ワークシートの見出しの文字と一致しています。

カッコ内の文字が変更されました。
カッコ内の文字が変更されました。

ワークシートを追加した場合は、プロジェクトエクスプローラーにもワークシートオブジェクトが追加されると思います。ワークシート「D」を追加してみます。

ワークシート「D」を追加してみました。
ワークシート「D」を追加してみました。

ワークシート追加後に、プロジェクトエクスプローラーを見てみると、「Sheet4(D)」という名前のワークシートオブジェクトが追加されています。「Sheet4」というオブジェクト名が自動的に命名されました。

「Sheet4(D)」のワークシートオブジェクトが追加されました。
「Sheet4(D)」のワークシートオブジェクトが追加されました。
Sheet2 ( Sheet2 ) '---(4)

「Sheet2」もワークシートオブジェクトなのでマクロが記述されているかもしれません。

Sheet3 ( Sheet3 ) '---(5)

「Sheet3」もワークシートオブジェクトなのでマクロが記述されているかもしれません。

ThisWorkbook '---(6)

ワークブック 1 つにつき、 1 つの「ThisWorkbook」が存在しているようです。「ワークブックオブジェクト」というものだと思います。ワークブックオブジェクトにはマクロを設定可能なので、マクロが記述されているかもしれません。

「ThisWorkbook」をダブルクリックすると、以下の画像のように、右側のウィンドウにマクロのコードが記述されているかもしれません。

「ThisWorkbook」にマクロが設定されている。
「ThisWorkbook」にマクロが設定されている。

以下のマクロが「ThisWorkbook」に設定されています。ワークブック保存前に自動で実行するマクロが設定されているようです。ワークブックの「BeforeSave」イベント発生時に自動で実行されるマクロになっています。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

MsgBox "ブックの保存前に発生するイベントです。"

End Sub

ワークブックを保存しようとすると、以下のメッセージボックスが表示されると思います。

ワークブックの保存前にメッセージボックスが表示されました。
ワークブックの保存前にメッセージボックスが表示されました。
[ - ]標準モジュール '---(7)

ワークブック 1 つにつき、 1 つの「標準モジュール」階層が存在しているようです。フォルダのようなものなので、これ自体には、マクロは記述されていないと思います。

Module1 '---(8)

「標準モジュール」が作成されているようです。マクロは標準モジュールに記述することが多いので、マクロが記述されているかもしれません。

「Module1」をダブルクリックすると、右側のウィンドウにマクロが記述されているかもしれません。

標準モジュールに記述されているマクロです。
標準モジュールに記述されているマクロです。

以下のマクロが「Module1」に記述されています。「Sub」から始まるマクロなので、「Alt + F8」のショートカットキーからも実行できると思います。

Sub マクロ1()

MsgBox "「マクロ1」を実行しました。"

End Sub

標準モジュールは、プロジェクトエクスプローラーから、新規追加、削除の操作が行えます。複数の標準モジュールを作成することも出来るので、それぞれにマクロが記述されているかもしれません。

ワークブックを複数開いている場合のプロジェクトエクスプローラーの画面は、以下の画像のようになります。

「Book1」と「Book2」を開いた状態のプロジェクトエクスプローラーの画面。
「Book1」と「Book2」を開いた状態のプロジェクトエクスプローラーの画面。

目次まで戻る

パスワードでロック

VBAProject にパスワードのロックが掛かっている場合は、 VBAProject を開いて中を見ることが出来ません。マクロの実行は出来ますが、編集を行うことが出来ないようです。

VBAproject にパスワードのロックが掛かっている。
VBAproject にパスワードのロックが掛かっている。

マクロの「編集」ボタンが押せないようになっていますね。

VBAproject が保護されていても、マクロの実行は可能です。
VBAproject が保護されていても、マクロの実行は可能です。

VBAProject の表示用のロックを設定する場合は、 VBE の「ツール > VBAproject のプロパティ」で表示されるダイアログボックスの「保護」タブにパスワードを設定します。

VBE > ツール > VBAproject のプロパティ
VBE > ツール > VBAproject のプロパティ

「プロジェクトを表示用にロックする」にチェックを入れて、プロジェクトのプロパティ表示のためのパスワードを設定します。

VBAproject のロックを設定しています。
VBAproject のロックを設定しています。

目次まで戻る

テスト環境

  • Windows 10
  • Microsoft Office Excel 2003

目次まで戻る

あとがき

「Alt + F8」のショートカットキーで Excel のマクロを実行する方法を書き始めましたが、「どんなマクロが保存されている?」の方が長くなってしましました。

以上、閲覧ありがとうございました。

目次まで戻る

同じカテゴリの投稿(Excel VBA)

前後の投稿