人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルの質問です。
フォーム上のボタンにショートカットキーを割り当てる方法を教えてください。

例えば、

AltF→Aなど連続した動作を「名前をつけて保存する」というボタンにしたいです。
「マクロの記録」はツールとして使えますか?

●質問者: clinejp
●カテゴリ:コンピュータ インターネット
✍キーワード:エクセル キー ショートカット ボタン マクロ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kopj
●35ポイント

ボタンではなく マクロにショートカットキーの割り当てをすることができます。

つまり、フォーム上のボタンを押したときに実行されるマクロに対して ショートカットキーを割り当てれば

ボタンをクリックしたものと同様になるでしょう。

ただし Ctrl + のものにしか 割り当てはできませんが・・・

http://www.relief.jp/itnote/archives/001490.php

◎質問者からの返答

ただし Ctrl + のものにしか 割り当てはできませんが・・・

というところがネックです。

でも、ありがとうございます。

他の用途で参考になります。


2 ● guja
●35ポイント

フォームというのが、VBAのユーザーフォームのことを指しているのであれば、

ユーザーフォームのkeyDownイベントに自前の処理を追加していけば、目的の動作ができるかと思います。


ユーザーフォーム上でキーを押したときはUserFormのKeyDownイベントが呼ばれます。

その第一引数のKeyCodeには押されたキーのキーコードが設定され、

第二引数のShiftという引数にはShiftキー、Ctrlキー、Altキーいずれかが押されたときに対応する値が設定されます。

Altキーだけが押されているときは引数の値が4になります。


これを使って、以下のような処理をすればよいのかなと思います。


もしAltキー押された→フラグ1をたてる →

フラグ1がたっている状態で文字キーが押された→そのキーがFならまた別のフラグ2をたてる。違っていたらフラグ1を解除 →

フラグ1とフラグ2がたっている状態で文字キーが押された→そのキーがAなら○○マクロを実行。そしてフラグ1フラグ2を解除



ちなみにExcelのシート上での場合は、KeyDownイベントが存在せず

Altキーを押した後はWindowsのメニューが優先的に処理されてしまうため、

上記方法では実現できません。

この場合はExcelの既存のメニューに独自の項目を割り当て、その項目にショートカットを設定することで対応できるかと思います。


Dim btn As CommandBarButton

Set btn = Application.CommandBars("Worksheet Menu Bar").Controls("ファイル(&F)").Controls.Add

btn.Caption = "独自マクロ(&R)"

btn.OnAction = "runMacro"


この場合、Alt→F→Rと押せば、メニューに表示されますが、独自のコマンドを設定できるかと思います。

http://officetanaka.net/excel/vba/tips/tips05.htm

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ