[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/10/13(Thu) 10:23
投稿者名:ダンボ
URL :
タイトル:
セルを押している間だけメッセージ表示
「Excel2002でバルーンヘルプ」の続編ですが、

「あるセルをマウス左ボタンで押している間だけ別ダイアログorメッセージボックスが表示され、
そのマウス左ボタンを離したときにその別ダイアログorメッセージボックスが消える」

という仕様を実現するにはどうしたらよいでしょうね?

対象セルは多数不定個なので、セルに透明コントロールを埋め込むと言う解は無しで。

・セルを選んだことをWorksheet_SelectionChangeで捕まえる
・別ダイアログorメッセージボックスをShow 1 で起動
・マウスの状態をGetAsyncKeyState(VK_LBUTTON)で調べ、Falseになるまで無限ループ
  (Sleepは無しだ。DoEventsはしないとまずいかも)
・GetAsyncKeyState(VK_LBUTTON)=Falseで左ボタンが戻ったので、別ダイアログorメッセージボックスを殺

  (ダイアログ.Hide でいいかな?)

投稿時間:2005/10/13(Thu) 13:12
投稿者名:ダンボ
URL :
タイトル:
Re: セルを押している間だけメッセージ表示
> ・セルを選んだことをWorksheet_SelectionChangeで捕まえる
> ・別ダイアログorメッセージボックスをShow 1 で起動
> ・マウスの状態をGetAsyncKeyState(VK_LBUTTON)で調べ、Falseになるまで無限ループ
>   (Sleepは無しだ。DoEventsはしないとまずいかも)
> ・GetAsyncKeyState(VK_LBUTTON)=Falseで左ボタンが戻ったので、別ダイアログorメッセージボックスを殺
> す

試してみました。わお、SelectionChangeって左ボタンを離したときに発生するようです。
だから目的に合いません。(GetAsyncKeyStateの戻り値はIntegerだし)

他に使えそうなイベントも無いし、かくなる上はマウスムーブ・メッセ−ジ処理をサブクラス化して
SendMessageでSelectionChangeメッセ−ジ(そんなものがあるか?)をシミュレートしてやろうか
と思う今日この頃です。