雪と『VBAでユーザーフォーム上のChange Eventを抑止する方法』

早朝のみぞれが雪に変わった。 11月の東京の雪は54年振りらしい。 仕事場の窓から見える外には、結構な雪が降っている。 まだ11月だと云うのに勘弁してほしいよ。

話し変わってVBA。 ユーザーフォーム上のコントロールにChange Eventのコードを書いていた。 具体的には、あるコントロールのChange Eventで別のコントロールの値を変えて、そうするとそのコントロールのChange Eventで次のコントーロールの値を変えてみたいなEventを連鎖させるコード。 それはそれでおっけーだったんだけど、フォームの初期化時にコントロールに値をセットするとChenge Eventが走ってしまい(そう云うコードを書いているんだから当たり前なんだけど)Eventの連鎖が起きてしまい、思うように動いてくれない。 ネットをみるとイベントは”Application.EnableEvents = False”で抑止できそうに書いてあるんだけどやってみても上手くいかない。 さらに調べてみると『Application(Excel)のイベントに対するモノであり、OLE オブジェクトであるフォームのイベントまでは制御できません。』という記述をみつけた。 なんだ、そうなんや。 というわけで、しかたなく初期化中フラグを作って、フラグが立っている間はChange Eventの頭のところで何もせずにリターンするコードを追加したら、やっと思い通りに動くようになった。 めんどうくさいなあ。
--
❄ のち ☁

No comments: