2014年9月14日日曜日

Excel VBA で 「End Subが必要です。」 の修正

VBAなんて滅多に触らないのだけど。
最近ちょくちょく使う。

Excel VBA で、コードに誤りがないのに 「End Subが必要です。」と言われることがある。


さらに、末端の End Sub 以降をいじろうとすると Excel ごとクラッシュする。

どうも構文解析機能的なものと実際のコードの対応が取れなくなると、そのようなエラーを出す模様。

この問題は、いったんエクスポートして、解放して、インポート すると解消する。

それに気がつくまでは試行錯誤した。


たとえば、末端の End Sub より前に、End Sub を記述し、コメントや CRLFを追加すると一時的にその問題を抑制できる。

End Sub <追加
' dummy <追加
crlf       <追加
crlf       <追加
End Sub「ここで改行するとクラッシュ」

このようにしてから、末端のEnd Sub を削除すると、最後のcrlf より前までは追加削除できるようなる。
でも、crlf 削って、End Subが末端になった時点でクラッシュ。

どうにもその現象がなおらんので、いったんエクスポートして、インポートしなおせば直るかなー思ったら直った。

別のエディタに張り付けて編集して、ある程度できたら元のIDE(?)に貼り付けてってのをやってるとなるのかもしれない。

あるいは、末端のEnd Sub 以降にコメントとか書いていて、それを消すと、おかしくなる気がする。


ということで End Sub で困ったらお試しあれ。