「End With に対応する With がありません。」の原因・解決方法

End With に対応する With がありません。
スポンサーリンク

エラー内容

VBAコンパイル時に、「End With に対応する With がありません。」と表示される。

End With に対応する With がありません。

原因と解決方法

おもに次の2つの原因と解決方法が考えられます。

(1)Withに対してEnd Withの方が多い

原因

Withの終わりをVBAに教えるのが、End Withです。
この終わりを意味するEnd Withが、開始を意味するWithより多いとこのエラーが起こります。

実際のプログラムでは、次のような場面で起こりやすいです。

  • 「Withは1つなのに、End Withを2回入力してしまった。」
  • 「Withをコメントアウトしたのに、End Withをコメントアウトし忘れた。」

 

解決方法

WithとEnd Withがセットになるように、不要なEnd Withはコメントアウト、または削除します。

今回の例は、Withをコメントアウトしているので、End Withもコメントアウトしています。

 

(2)If文が閉じていない

原因

Withの内側にあるIf文が正しく閉じていない時に起こります。

エラーメッセージが「End With に対応する With がありません。」なので、With周辺に目が向いて、なかなかエラー原因を特定できないパターンです。

 

解決方法

End ifを追加して、内側のIf文を正しい構造にします。

POINT
WithとEnd Withの数が同じで、正しくセットになっている時は、内側のIf文などをチェックしてみてください。

 

関連記事

VBAエラー原因・解決方法
VBAエラー原因・解決方法
エクセルVBAおすすめ本|実際に読んだ本を目的別に紹介
エクセルVBAおすすめ本|実際に読んだ本を目的別に紹介
中途・未経験でプログラマーに転職する方法【30代前半までが勝負】
中途・未経験でプログラマーに転職する方法【30代前半までが勝負】
タイトルとURLをコピーしました