「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エラー原因・解決方法
成果を出す5つのポイント
タイトルとURLをコピーしました