ExcelVBA コード実行してもエラー表示なしで動かない|動作させる方法

 

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エキスパート資格を解説!