2016年8月31日水曜日

Excel VBA 素早くクリックすると反応してしまう

【不具合点】
シート上に設けたボタン(OLEObject)をクリックすると、そのイベント処理の間に素早くクリックを繰り返すと、その処理が終わった後も、2,3回再実行されてしまう不具合。

【原因】
3秒間程度のイベント処理は、計測機器の制御を伴う為 sleep が多用されておりボタンクリックのイベントも受け付けるからでは。

【対策/効果無し】
  1. 処理の先頭で、ボタンをディスエーブルする(グレー表示になる)
  2. 表示されているセルに"BUSY"を書き込んでフラグと兼ねた表示にする②
  3. ②ではダメなので、ステータスバーに"BUSY"を表示しフラグとして使う
  4. 表示させることがまずいと考え、純粋にフラグを使うも効果なし

【採用した方法】
  • 「無かったことにする」・・・マウスバッファをクリアする
    Win32 API PeekMessage 関数を使用して実現