◇ FOR ループでエラーになる
Q:次のようなマクロを組んでいるのですが、なぜかエラーになります。
FOR %0=1 TO 100
:
IF (= (message "終了しますか?") "Yes") GOTO :exit ; ループ中、終了するか問い合わせ。「はい」ならループ終了
:
NEXT
:exit ; ループ終了後の処理
A: FOR〜NEXT の中から GOTO で外に出ているからです。
KMmacro は、「Next のところで %0 が100以上になっている」と、「FOR 文は終了した」と判断します。ですから、上の例のように GOTO で抜けてしまうと、終了と判断しないまま、マクロを続けていることになります。これが繰り返されると、FOR が幾重にも積み重ねて実行されている扱いになってしまい、エラーになることがあります。
FOR の中から脱出したい場合は、EXITFOR を使ってください。
FOR %0=1 TO 100
:
IF (= (message "終了しますか?") "Yes") EXITFOR ; ループ中、終了するか問い合わせ。「はい」ならループ終了
:
NEXT