
Excel VBA コードを実行しても エラーは出ないのに動かない 原因を理解し、正しく動作させる方法。使い方や注意点など、サンプルコードをもとに具体的に解説します。
Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!
👉 VBAエキスパート資格のメリットを詳しく知る
Excel VBA エラー表示なしで動かない|シーン
以下のシーンで利用します。
1.マクロを実行しても何も起こらない。
2.コードは書いたが結果が変わらない。
3.エラーが出ないので原因が分からない。
マクロができる人が少ない職場
数年後にはあなたより効率的な後輩にポジションを奪われるかもしれません。
👉 詳細はこちら
Excel VBA エラー表示なしで動かない|サンプルコード
マクロが実行されていない
・マクロが Sub や Function として正しく定義されているか
・Option Explicit を使い、変数のミスを防いでいるか
・マクロが無効化されていないか(セキュリティ設定の確認)
・実行方法を確認(マクロ一覧から実行、ショートカットキー、ボタンなど)
・ブレークポイント(F9キー)を使い、実行されているか確認
マクロ一覧から「TestMacro」を実行して確認
Option Explicit
Sub TestMacro()
MsgBox "動作確認" ' 実行されるとポップアップが出る
End Sub
「いまは、きちんと勉強しなくてもなんとかなる」は今だけ?
そのままいけば、AIの進歩で1年後には時代遅れの人になっているかも。
👉 詳細はこちら
セル範囲やシートの指定ミス
・Range("A1")` の対象シートが アクティブシート になっているか
・Cells(1, 1)` の ワークシートの指定 を忘れていないか
・ワークシートを明示的に指定する
・アクティブシート依存のコードを避ける
「Sheet1」を明示的に指定する
Option Explicit
Sub SetValue()
' ★ワークシート名を指定
Sheets("Sheet1").Range("A1").Value = "成功"
End Sub
条件分岐(If, For)が誤っている
・If 文の条件が 意図したとおりに動作しているか
・For ループが 正しく実行されているか
・デバッグ用の MsgBox を使い、条件が通っているか確認
・Debug.Print で条件をログ出力
Option Explicit
Sub CheckCondition()
Dim num As Integer
num = 10
If num > 100 Then ' num = 10なのでここは実行されない
MsgBox "成功"
End If
End Sub
Debug.Print num を入れて、値を確認する
画面更新が無効化されている
・Application.ScreenUpdating = False を使って 画面が更新されていない 可能性
・処理の最後に ScreenUpdating = True を入れる
Option Explicit
Sub UpdateScreen()
Application.ScreenUpdating = False ' 画面更新オフ
Range("A1").Value = "成功"
Application.ScreenUpdating = True ' 画面更新オン
End Sub
「いまは、きちんと勉強しなくてもなんとかなる」は今だけ?
そのままいけば、AIの進歩で1年後には時代遅れの人になっているかも。
👉 詳細はこちら
コードが途中で止まっている(Exit Sub, Exit For)
・Exit Sub や Exit For によって 処理が途中で終わっていないか
・デバッグ実行(F8キー)で途中で止まるか確認
・メッセージボックスを途中に入れ、どこで止まるか確認
Option Explicit
Sub StopEarly()
MsgBox "処理開始"
Exit Sub ' ここで止まるため、次の処理が実行されない
MsgBox "ここには来ない"
End Sub
「Exit Sub」が不要なら削除する
ループがスキップされる
・For Each で 対象のセルがない 場合、ループが動かない
・ループ対象にセルがあるか確認
Option Explicit
Sub SkipLoop()
Dim rng As Range
Dim cell As Variant
Set rng = Range("B1:B10").SpecialCells(xlCellTypeConstants) ' 値のあるセルのみ
For Each cell In rng
cell.Interior.Color = RGB(255, 0, 0) ' 赤にする
Next cell
End Sub
「rng」が Nothing でないか MsgBox rng.Address で確認
Excel VBA エラー表示なしで動かない|まとめ
原因 | 解決策 |
マクロが実行されていない | MsgBox を入れて確認、F8でデバッグ実行 |
シート・セル範囲の指定ミス | Sheets("Sheet1").Range("A1") のようにシート指定 |
条件分岐が間違ってい | Debug.Print で値を確認 |
画面更新オフで結果が見えない | Application.ScreenUpdating = True を追加 |
Exit Sub や Exit For で途中で止まる | MsgBox でどこで止まるか確認 |
ループがスキップされる | MsgBox rng.Address で範囲が正しく取れているか確認 |
ExcelVBAの「エラーなしで動かない」 は 原因を1つずつ確認する のが解決のコツです!
特に デバッグ実行(F8)や MsgBox を活用 して、どこで止まっているのかを確認すると素早く修正できます。
Excel VBAで自動化するコードのベースを習得したい方におすすめ!
VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。
ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。
ExcelVBAエキスパートスタンダード
ExcelVBAの開発を仕事にする人が対象の問題集です。
Excel VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。
Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!