プロが教える店舗&オフィスのセキュリティ対策術

キーボードが押されたことを、イベントとするマクロってできるのでしょうか?例えば、ctlキーが押されたら、"押されました"、離されたら”離れました”って表示する方法をご伝授願えればと思います。どなたか、VBAに詳しい方、宜しくお願いいたします。また、感知することが出来ないキーや、右や左で判別できない(例えば、shiftキー)キーもあるのでしょうか?

A 回答 (2件)

こんばんは。



以前、9x系で、Win32APIを、見よう見まねで、キーイベントを作ろうとして、見事に失敗した経験があります。理論的は間違いないつもりでいたのですが、二度と試そうとは思いません。基本的には、無理だと考えてよいと思います。

>Win32API のGetKeyboardState 関数は、現在押しているかの判別だと思いますが???正しいのでしょうか?

確かに、そのとおりではあるのですが、あくまでも、API関数を通しての結果だったと思います。

>Alt キー、Ctrl キー、Shift キー(今考えているのは、Ctrl キー、Shift キー)を押した時に、メニューバーの表示を切替えようと考えています。

必要ないというよりも、Alt キーは、Excel等のアプリケーションと、コンフリクトを起こすのではないでしょうか?せいぜい、シフトキーまでにしないと、あぶなくてしょうがないです。それから、シフトキーだけでメニューを換えるというのは、既存のアプリでも出来ていませんね。あくまでも、ボタンのクリック・イベントに対して、シフトキーをチェックしてメニューを換えるようにされています。

あまり凝った方法にしないで、新たに、ツールバー全体を作るか、メニューバー自体を入れ替えたほうが早いのでは?どんなに多くても、100までにはならないと思いますが。というか、それだけのプロシージャを確保して運用しても、重すぎるのではないか、と思います。

私の苦い経験で、最初の大きく構えて設計段階でコケてしまうと、後が全滅になりますよ。小技を構築して、大きなものを作ったほうが、成功率は高いです。

また、ロータス方式のように、ひとつの大メニューバーのメニューコマンドに対して、小メニューバーを設けていってもよいのではありませんか?

これ以上は、私としては、なんとも言い様がありません。
    • good
    • 0
この回答へのお礼

貴重なご意見有難う御座います。大変参考になりました。ただ、昔のMS-DOSのファンクションキーみたいなことが出来れば・・・!と思ったのがきっかけでした。ちょっとお洒落かなぁって思ったのでが、Windowの考え方から逸脱するので、忠告どおり別の方法を考えます。予め、相談して無駄に時間を費やすのが避けることが出来ました。本当に有難う御座いました。

お礼日時:2006/07/08 00:29

シートのイベントにはありません。


ユーザーフォームのコントロールにはキーイベントの設定が可能です。

どのような事をしたいのでしょうか?


Application.OnKey
で、任意のキーに機能(マクロ)を設定する事が出来ます。
http://www.officetanaka.net/excel/vba/tips/tips6 …

この回答への補足

早速のご指導ありがとう御座います。ご指導頂いた内容について補足させていただきます。具体的なことを書かなかったのが原因ですが、Alt キー、Ctrl キー、Shift キー(今考えているのは、Ctrl キー、Shift キー)を押した時に、メニューバーの表示を切替えようと考えています。(こんなことする必要がないとのご意見は多数あると思いますが・・・??)イメージ的には、windowからの割り込み信号のフックかと思いますが、方法が判りません。合せてご指導願えないでしょうか?(Win32API のGetKeyboardState 関数は、現在押しているかの判別だと思いますが???正しいのでしょうか?)

補足日時:2006/07/07 10:34
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています