Excelマクロを実行中には、Excel操作ができなくなります。 というのが一般のExcelマクロの認識だと思います。 理由としてはExcelマクロはシングルスレッドで動くから、とよく言われています。 もちろん間違ってはいませんが、javascriptも同じだよねえ、と考えたことはありませんか? VBAの時代はawaitなどは存在しないけど、同じ悩みは当時もあったはずです。 で、VBAを見てみると、DoEvents関数がありました。 DoEventsを実行した場合、制御をExcelに戻し、キー入力分をすべて処理した後にVBAに制御が戻ってきます。 処理の途中途中でDoEventsを呼び出しておけば、Excelが固まったということは案外避けられるかもしれません。 とはいえ、マクロを使う人だけでなくマクロを作る人も含めて、「Excelマクロを実行中には、Excel操作ができなくなる」 が、みんなの認識として定着しているので、DoEventsを入れた場合にマクロが意図した動きになっていない、ということも多発するんだろうなぁ。
0 件のコメント:
コメントを投稿