【Excelマクロ】F5を押しても動かない原因と、マクロ画面を開かずに実行する方法

結論:

  • F5を押してもマクロが実行されないのは、「押している場所」と「マクロの書き方・置き場所」が原因です。
  • マクロ画面(VBE)を開いてF5を押さないと実行できないわけではなく、Excel側からボタンやショートカットで実行する方法も普通にあります。

この記事では、実際に自分で調べて整理した内容をもとに、
「F5を押してもマクロが動かない理由」と「F5に頼らない実務向きの実行方法」
を、順番に解説していきます。


こんなことで困っていませんか?

  • 「マクロはF5で実行できますよ」と教えたのに、相手のPCで動かない
  • Excelのセル画面でF5を押しても、ジャンプ画面しか出てこない

自分も最初は同じところでつまずいたので、
なぜそうなるのかを一度きちんと整理しておきたいと思い、VBAの仕様や実務での使われ方を調べてまとめました。


1. まず整理:F5の正体は「マクロ実行ボタン」ではない

1-1. Excel画面のF5と、マクロ画面のF5は別物

最初の大前提はこれです。

  • Excelのセル画面で F5
    → 「ジャンプ」ダイアログが開くだけ(セル移動のショートカット)
    → マクロは一切動かない
  • VBE(マクロ画面)で F5
    → その時点で選択されている Sub を実行するショートカット

つまり、

「F5を押す=マクロが動く」ではなく、
VBEの中でF5を押したときだけ、マクロが動く

という仕様です。

ここをお互いに共有できていないと、

  • 教える側:「F5で実行してください」
  • 教わる側:Excel画面でF5連打

というすれ違いが起こります。


1-2. F5で実行できるマクロの条件

さらにややこしいのが、「どんなコードでもF5で動くわけではない」という点です。

F5で実行できるのは、基本的に次のようなマクロです。

  • 標準モジュール(Module1など)に書かれている
  • Public Sub マクロ名()
  • 引数なし

例:

Public Sub TestMacro()
    MsgBox "マクロが実行されました"
End Sub

逆に、次のようなパターンはF5で直接実行できません。

  • 引数付きの Sub
Sub ExportReport(ByVal TargetDate As Date)
    ' F5で直接は実行できない
End Sub
  • Function プロシージャ(戻り値付きの関数)
Function CalcTax(price As Double) As Double
    CalcTax = price * 1.1
End Function
  • シートモジュールやThisWorkbookに書かれたイベントプロシージャ
Private Sub Worksheet_Change(ByVal Target As Range)
    ' セル変更をきっかけに動く処理。F5で直接動かす想定ではない
End Sub

「F5を押しても動かない」ときは、
そもそも 「F5で動かす前提の書き方になっていない」 ことも多いです。


2. 「F5を押したのにマクロが実行されない」ときのチェックリスト

ここからは、実際にトラブルが起きたときに確認したいポイントを、チェックリスト形式でまとめます。

チェック1:F5を押しているのはExcel画面か?VBEか?

一番多いのがこれです。

  • セルが並んでいるExcel画面でF5 → マクロは動かない(ジャンプだけ)
  • VBEのコード画面でF5 → マクロ実行

まずは「押している場所」を確認します。
教える側も、**「マクロ画面を開いて、そっちのF5です」**と具体的に伝えておくと事故が減ります。


チェック2:マクロは「標準モジュール」に置かれているか?

VBAにはコードの置き場所がいくつかあります。

  • 標準モジュール(Module1, Module2…)
  • シートモジュール(Sheet1, Sheet2…)
  • ThisWorkbook
  • クラスモジュール

F5で手動実行したい「普通のマクロ」は、標準モジュールに置くのが基本です。

もし、シートモジュールにこんな風に書いているとします。

Sub Test()
    MsgBox "Hello"
End Sub

見た目は普通のSubですが、場所がシートモジュールだと、

  • Alt + F8のマクロ一覧に出てこなかったり
  • F5の挙動も分かりづらくなったり

と、いろいろ混乱の元になります。

VBE左側の「プロジェクト」ウィンドウで、

  • Module1 などの標準モジュールの中にマクロが入っているか

を確認しておくと安心です。


チェック3:マクロが「有効化」されているか?

マクロを含むブックを開いたとき、画面上部に黄色いバーで

「セキュリティの警告:マクロが無効にされました」

と出ている状態だと、そもそもマクロは一切動きません
F5を押しても無反応になります。

  • 「コンテンツの有効化」をクリックしたか?
  • 会社のセキュリティ設定でブロックされていないか?

ここも事前に確認しておく必要があります。


チェック4:Subに引数や戻り値が付いていないか?

例えば次のようなコードは、F5では直接実行できません。

Sub UpdateReport(ByVal TargetDate As Date)
    ' 日付を引数で受け取るタイプ
End Sub

この場合は、F5で実行するための「入口用マクロ」を別に作るのが定石です。

Public Sub UpdateReportMain()
    Dim d As Date
    d = Date ' 例:今日の日付で実行
    Call UpdateReport(d)
End Sub

F5で実行するのは UpdateReportMain の方にしておきます。


チェック5:それは本当に「マクロ」か?それとも「関数」か?

VBAには、セルで使うためのユーザー定義関数もあります。

Function TaxIncluded(price As Double) As Double
    TaxIncluded = price * 1.1
End Function

これは、「関数」としてセルに

=TaxIncluded(A1)

と入力して使うもので、F5で動かすものではありません。

  • 「マクロ」と呼んでいるが、実はFunctionだった
  • だからF5を押しても何も起きないように見える

というケースもあります。


3. 「マクロ画面を開いてF5を押さないと実行できないのか?」

ここが2つ目の悩みの本題です。

結論は 「いいえ」 です。

VBEでF5を押すのは、あくまで開発者側の操作です。
実務では、Excel側からマクロを実行する方法を用意しておく方が、圧倒的に使いやすいです。

ここからは、マクロ画面を開かずに実行する典型的な方法を3つ紹介します。


4. マクロを「マクロ画面なし」で実行する3つの方法

4-1. Alt + F8 から実行する(Excel標準のやり方)

  1. Excel画面で Alt + F8 を押す
  2. マクロの一覧から実行したいマクロを選ぶ
  3. [実行] をクリック

ここに一覧表示されるのは、

  • 標準モジュールにある
  • 引数なしの Public Sub

だけです。

F5で実行したいマクロも、同じ条件になっていることが多いので、
「開発中はVBEでF5、本番ではAlt + F8」という使い分けもできます。


4-2. Ctrl + ○ のショートカットキーを割り当てる

頻繁に使うマクロは、ショートカットキーを割り当ててしまうとかなり楽になります。

  1. Alt + F8 → マクロ一覧を開く
  2. 実行したいマクロを選んで [オプション] をクリック
  3. 「ショートカットキー」に、例えば Ctrl + Shift + M などを設定する

これで、Excel画面で Ctrl + Shift + M を押すだけで、そのマクロが実行されます。

  • 自分用のツールなら「ショートカット」
  • 他人に配るテンプレートなら「ボタン」

と分けると運用しやすいです。


4-3. ボタンや図形にマクロを割り当てる

マウス操作が中心の人には、ボタン実行の方が直感的です。

  1. [挿入] → [図形] から四角形などを描く
  2. 描いた図形を右クリック → [マクロの登録]
  3. 実行したいマクロを選択して [OK]

これだけで、その図形をクリックするだけでマクロが実行されます。

「マクロの画面なんて開きたくない」という人でも、
ボタンを押すだけなら抵抗なく使ってくれます。


5. まとめ:F5は「開発者のための実行ボタン」として割り切る

最後に、本記事のポイントを整理します。

  • F5でマクロが実行されないのは、
    • Excel画面でF5を押している
    • マクロの置き場所が標準モジュールではない
    • 引数付きSubやFunctionなど、F5向きではない書き方になっている
      といった理由が多い
  • 「マクロの画面を開いてF5を押さないと実行できない」わけではない
    • Alt + F8
    • ショートカットキー(Ctrl + ○)
    • ボタン・図形に割り当て
      など、Excel側から実行する方法はいくつもある
  • 実務的には、
    • 開発・デバッグ中 → VBEのF5
    • 普段の運用 → Alt + F8、ショートカット、ボタン
      という使い分けが現実的

F5そのものを「マクロ実行の正義」と思い込むと、

  • 「F5を押しても動きません」
    というトラブルが何度も発生します。

F5はあくまで 「開発者がテストするときに使うボタン」 と割り切って、
利用者には、Alt + F8やボタンなどの手段を用意しておく方が、結果的にトラブルも手間も減ります。

コメント

タイトルとURLをコピーしました