[[20090825042454]] 『VBA:コマンドボタンにショートカットキーを割りax(masabou5) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『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.