エクセルの質問です。

フォーム上のボタンにショートカットキーを割り当てる方法を教えてください。

例えば、

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/04/13 08:53:55
  • 終了:2008/04/20 08:55:02

回答(2件)

id:kopj No.1

kopj回答回数123ベストアンサー獲得回数62008/04/13 09:32:58

ポイント35pt

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

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

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

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

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

id:clinejp

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

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

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

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

2008/04/18 08:44:45
id:guja No.2

guja回答回数40ベストアンサー獲得回数82008/04/15 17:53:39

ポイント35pt

フォームというのが、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

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません