Excel VBAでマクロを実行しても、何も反応がない。エラーも出ないし、画面も変わらない。
「壊れてる?」「間違ってる?」と感じるこうしたケースは、実務でもよくあります。
今回は、「マクロが動かないときに確認すべきポイント」をチェックリスト形式でまとめつつ、VBAの基本的な挙動と合わせて解説します。
動かない理由は「エラー」だけじゃない
「VBAが動かない」というと、「コードが間違ってる」「構文エラーがある」と思われがちですが、そもそもマクロが実行されていないこともよくあります。
たとえば、次のような原因が考えられます。
- マクロが「無効」になっている
- マクロを「実行」していない(ボタンやショートカットが正しくない)
- マクロの対象範囲が間違っている(何も処理しない)
次に、それぞれのケースについて具体的に確認方法を紹介します。
チェックすべきポイント一覧
1. マクロが有効になっているか
まずは基本中の基本。マクロが有効になっていないと、どんなに正しく書いても動きません。
確認方法:
- 「セキュリティの警告」→「コンテンツの有効化」をクリックしたか?
.xlsmや.xlsbの形式で保存されているか?
補足
.xlsx 形式ではVBAが保存されず、マクロは実行できません。
2. マクロの起動方法に問題がないか
コードは正しくても、マクロが実行されていなければ何も起こりません。
よくあるパターン:
- ボタンに正しいマクロが割り当てられていない
- 実行しているマクロが別名や別プロシージャ
- ショートカットキーの設定ミス
確認方法:
「開発」タブ →「マクロ」ボタンを押して、対象マクロを手動実行してみましょう。
3. コードは「ちゃんと動く内容」になっているか
次のようなコードでは、エラーは出ませんが結果が見えないため「動いてない」と勘違いされがちです。
Sub Sample()
Dim r As Range
Set r = Range("A1")
End Sub
このコードでは、A1セルを変数にセットするだけで、画面上は何も変わりません。
「何が変わる処理になっているか?」を確認しましょう。
4. エラーが非表示になっていないか
次のような設定があると、エラーが発生しても表示されないため、「何も起きない」と感じます。
On Error Resume Next
この命令があると、エラーをスキップして次に進むため、失敗しても見えない状態になります。
対策:
デバッグ中はこの行をコメントアウト(’ を先頭に)して、エラーを表示させましょう。
5. 条件に合わない処理になっていないか
条件分岐(If文)があると、該当しなければ何もしない処理になります。
If Range("A1").Value = "開始" Then
MsgBox "開始しました"
End If
このコードは、A1に「開始」と書いていないと反応しません。
対策:
- 該当条件が本当に満たされているか確認
- 一時的に条件を外してテスト
実装するメリット
このような確認ポイントを知っておくことで、「VBAが動かない」という漠然とした不安を、論理的に切り分けて対処できるようになります。
- 無駄な試行錯誤を減らせる
- 作業スピードが向上する
- コードの品質・管理もしやすくなる
特に「マクロはブラックボックスで怖い」という印象を持っている方ほど、基本のチェックポイントを知っておくと安心です。
まとめ
VBAが動かないときは、エラーだけが原因とは限りません。そもそも「動いていない」「条件に合っていない」「結果が見えていない」などのパターンも多く存在します。
.xlsm形式で保存されているか- マクロが有効化されているか
- 正しい方法で実行しているか
- 条件分岐や非表示エラーによりスキップされていないか
- 実行しても何も起こらない処理になっていないか
こうしたチェックリストを1つずつ確認することで、「なぜ動かないのか」が明確になり、安心してトラブル対応できるようになります。
