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

 

Excel VBA  コードを実行しても エラーは出ないのに動かない 原因を理解し、正しく動作させる方法。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

Excel VBA エラー表示なしで動かない|シーン

以下のシーンで利用します。

1.マクロを実行しても何も起こらない。

2.コードは書いたが結果が変わらない。

3.エラーが出ないので原因が分からない。

 

Excel VBA エラー表示なしで動かないサンプルコード

マクロが実行されていない

チェックポイント

・マクロが Sub や Function として正しく定義されているか
・Option Explicit を使い、変数のミスを防いでいるか
・マクロが無効化されていないか(セキュリティ設定の確認)

解決策

・実行方法を確認(マクロ一覧から実行、ショートカットキー、ボタンなど)
・ブレークポイント(F9キー)を使い、実行されているか確認

マクロ一覧から「TestMacro」を実行して確認

Option Explicit

Sub TestMacro()
    MsgBox "動作確認" ' 実行されるとポップアップが出る
End Sub

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

 

セル範囲やシートの指定ミス

チェックポイント

・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

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

 

コードが途中で止まっている(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エキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問