• Skip to main content
  • Skip to primary sidebar
  • Skip to footer
  • タイプ
    • 日記
    • 読書
    • 買物
    • ドラフト
    • 記事
    • まとめ
  • トピック
    • PCスマホ
    • 金融
    • 家事子育
    • 働き方
    • メンタル
    • ブログ
    • 未分類
    • 作業標準化
    • ドラム
    • 生活
    • リストアップ
    • その他

金融系エンジニア日記

金融系エンジニアがいろいろなものをテクノロジーで効率化する備忘録

現在の場所:ホーム / トピック / PCスマホ / VBAのFOR/NEXTエラーが直らない原因2選(ENDと変数宣言)

VBAのFOR/NEXTエラーが直らない原因2選(ENDと変数宣言)

VBAで開発していると、エラーメッセージを見ても原因がわからないことがあります。

今回は、実際にハマりやすい以下の2つについて、具体例つきで解説します。

  • FORとNEXTの対応エラー(実は違う原因)
  • 謎の「ByRef引数の型が一致しません」エラー

① FORとNEXTが合っているのにエラーになる原因

よくある状況

こんなエラーに遭遇したことはありませんか?

「Forに対応するNextがありません」

でも実際にコードを見ても…

For i = 1 To 10
    Debug.Print i
Next i

どう見ても合っている。なのにエラー。


真の原因は「END単体」

実は、原因は全然別の場所にあることが多いです。

例えば👇

Sub Sample()

    For i = 1 To 10
        If i = 5 Then
            End   ' ← これが原因
        End If
    Next i

End Sub

なぜこれでおかしくなるのか?

End は、

👉 その場でプログラムを強制終了する命令

です。

つまり、

  • 構文的にはOK
  • でも処理の流れが途中で切れる

結果として、VBAは

👉 「構造が壊れている」と誤認識

して、関係ないエラーを出します。


解決方法

手順

  • End を検索(Ctrl + F)
  • 以下をチェック
End IF
End With
End Sub
End Function

👉 「End 単体」が無いか確認する


ポイント

  • エラーメッセージは必ずしも正しくない
  • 「構文エラーっぽい時ほど別の原因」を疑う

② 謎の「ByRef型不一致」エラーの正体

よくあるエラー

ByRef 引数の型が一致しません

でもコードは正しそう👇

Sub Test()
    Dim a, b, c As String
    
    a = "Hello"
    Call Sample(a)
End Sub

Sub Sample(str As String)
    Debug.Print str
End Sub

何が問題なのか?

この宣言👇

Dim a, b, c As String

実はこう解釈されます👇

Dim a As Variant
Dim b As Variant
Dim c As String

👉 最後の変数だけ型指定される


なぜエラーになるのか?

  • a は Variant
  • Sample は String を期待

👉 型が違うので ByRef エラー発生


解決方法

正しい書き方

Dim a As String
Dim b As String
Dim c As String

比較

NG

Dim a, b, c As String

OK

Dim a As String
Dim b As String
Dim c As String

実務での対策

  • 1行1変数で定義する
  • Variantの混入を防ぐ
  • バグ調査時間を削減できる

まとめ

FOR/NEXTエラー

  • 原因はFORではないことが多い
  • End 単体が潜んでいる可能性大

ByRefエラー

  • 原因は変数宣言
  • 「複数変数を1行で定義」が地雷

結論

VBAは

👉 エラーメッセージをそのまま信じるとハマる言語

です。

だからこそ、

  • 構造を疑う
  • 書き方を統一する

これだけで、トラブルの8割は防げます。

The following two tabs change content below.
  • この記事を書いた人
  • 最新の記事
Twitter のプロフィール

ストレスフリー

うつ病の子育て中の金融系システムエンジニアです。 名もなき家事、目的のない仕事、見えない不自由、チリツモストレスを見つけ出して、設備投資、システム化、見える化により、解決します。 習い事で、ドラムをしていました。
Twitter のプロフィール

最新記事 by ストレスフリー (全て見る)

  • ある日、突然おかしくなった【朝の一歩目が激痛】かかとの骨にヒビが入ったと思って整形外科に行った話 - 2026-03-21
  • Excelしか知らない人へ:VLOOKUP・XLOOKUPで頑張っているなら、DataFrameを使わないと正直もったいない - 2026-03-20
  • PythonでOracle接続にハマった話(64bit問題とtnsnames.oraの落とし穴) - 2026-03-20

共有:

  • X で共有 (新しいウィンドウで開きます) X
  • Facebook で共有 (新しいウィンドウで開きます) Facebook

いいね:

いいね 読み込み中…

最初のサイドバー

Googleでサイト内検索

固定ページ

  • このサイトについて
  • ストレスから自由になる日記のホームページ
  • ストレスから自由になる日記の投稿ページ
  • 新着投稿一覧

最近のコメント

  • パスワード入力が必要な認証付きプロキシの内側のLANでmattermostクライアントとVisua lStudioCodeを使う に iloveadachi より
  • パスワード入力が必要な認証付きプロキシの内側のLANでmattermostクライアントとVisua lStudioCodeを使う に kaakaa より
  • 【体験談】クライングコントロールで9ヶ月の赤ちゃんが3日で朝まで寝た方法 に クライングコントロールのその後 夜中にまた起きるようになった。 – 金融系なんちゃってSEの日記 より

最近の投稿

  • Android個人開発、最後の壁は「テスター12人」だった話
  • 【保存版】テニススクールで学んだことまとめ|3年間の気づきと上達のコツ
  • ある日、突然おかしくなった【朝の一歩目が激痛】かかとの骨にヒビが入ったと思って整形外科に行った話
  • Excelしか知らない人へ:VLOOKUP・XLOOKUPで頑張っているなら、DataFrameを使わないと正直もったいない
  • PythonでOracle接続にハマった話(64bit問題とtnsnames.oraの落とし穴)

感想、要望などコメントをください

Footer

Feedly でフォロー

follow us in feedly

はてなブックマーク でフォロー

このエントリーをはてなブックマークに追加

トップページへのリンク

ストレスから自由になる日記 トップページ

%d