「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文などをチェックしてみてください。

 

関連記事

タイトルとURLをコピーしました