[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA:コマンドボタンにショートカットキーを割りあてる』(masabou5)
いつもお世話になっています。 コントロールツールボックスのコマンドボタンにショートカットキーを割り当てたいのですが どのようにすれば出来ますか? ワークシートに、「cmdCheck」というコマンドボタンがあり、これを押すと動作するようになっていますが、 いちいちクリックするのが面倒なときがあります。 そこで、ショートカットキーを割り当てたいのです。
よろしくお願いします。Excel2003です。
仮にこのcmdCheckというコマンドボタンがSheet1に配置されているとすると、 このクリックイベントプロシジャーは、
'=========================================== Private Sub cmdCheck_Click() MsgBox "Sheet Event Execute!!" End Sub
このようになっていますよね(コードの中身は別として・・・)
標準モジュールに
'=================================================================== Sub key_set() Worksheets("sheet1").cmdCheck.TakeFocusOnClick = False Application.OnKey "%{a}", "Sheet1.cmdCheck_Click" End Sub '=================================================================== Sub key_reset() Application.OnKey "%{a}" Worksheets("sheet1").cmdCheck.TakeFocusOnClick = True End Sub
上記のkey_setの実行で以降は、alt+aキー でコマンドボタンのクリックイベントが実行されます。
key_resetの実行でalt+aキー の効果を無効(リセット)にします。
これをどのタイミング実行するかは、仕様によります。
当該シートがアクティブになったときにキーに効果を与えるなら、 Worksheet_Activateで設定します。
ブックが開かれた時にキーに効果を与えるなら、 ThisworkbookのWorkbook_Openで設定します。
因みに Worksheets("sheet1").cmdCheck.TakeFocusOnClick = False このコードは、これをTrueにしておくと、 cmdCheckというコマンドボタンをマウスクリックした直後に alt+aキーを押してもコードが実行されないための対応です。
ichinose@田川寿美という歌手の歌のうまさに昨日突然気づいた
altキー専用なら、Acceleratorというプロパティがありますねえ
cmdCheck.Accelerator = "c"
と設定しておくと alt+cキー でイベントが実行されます。
こっちの方が簡単ですね、事前設定もできるし・・・。
ALTキーとは限らないなら、前投稿を検討してください。
ichinose
ichinoseさん、早速ありがとうございました。 Acceleratorというプロパティはすごいですネー。 一発で設定できました。 とても有用で、使い勝手がよくなりました。 厚く御礼申し上げます。(masabou5)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.