- 415 名前:デフォルトの名無しさん [2008/01/18(金) 19:41:23 ]
- Worksheet_Changeで対応できない書式の変更にリアルタイム反応するためユーザーが入力した書式などをリアルタイム監視するプログラムを作成したところ、終了条件の問題に突き当たり処理に悩んでます。
'----------------------------- Private EndFlg As Boolean Sub Worksheets_Activate EndFlg = False Call 監視処理 End Sub Sub Worksheets_Deactivate EndFlg = True End Sub Sub 監視処理 Do (処理) DoEvents Loop Until EndFlg = True End Sub '------------------------------ このようなものが、ほとんどのワークシートに書いてある状態です。 Loop Until EndFlg = True の直後にメッセージボックスを設け確認したところ、Worksheet_Activateのあるシートに移動するとその場では終了せず、Activateのないシートに移動した瞬間に終了します。 たとえばActivateのあるシートA、BとActivateのないシートCがある場合 A→C、B→Cは正常な終了が確認できるのですが A→B、B→Aは終了メッセージが出ません。 A→B→A…を延々繰り返したあとにCを選択すると、終了メッセージがA⇔Bした回数に比例して複数出るため多重起動であると断定できました。 Activateのないシートをはさまずに開放する方法ありませんでしょうか。
|

|