【Excelマクロ】何も起こらない…VBAが動かない時のチェックリスト

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つずつ確認することで、「なぜ動かないのか」が明確になり、安心してトラブル対応できるようになります。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール