- 締切済み
Application.OnKey:項目入力中のFKEY変更
EXCELのVBAにて、Application.OnKeyを使用して、FKEYの機能を変更しました。 Application.OnKey "{F1}", "Sheet1_F1" 但し、TABで項目移動後は機能するのですが、項目入力途中に「F1」を押すと、変更前の機能である「HELP」が効いてしまいます。 これを、回避する方法はありますか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- kiki_s
- ベストアンサー率59% (147/248)
通常はヘルプ表示のファンクションキーを別の事に利用する訳ですね? では、「Application.OnKey "{F1}", "Sheet1_F1"」 は、 どこに書かれているのでしょうか? シート?標準モジュール? また、「Sheet1_F1」は標準モジュールに書かれたプロシージャでしょうか? それに、書式の問題もあります。 EXCELを起動後、終了するまでキーの機能変更を有効にするには、 標準モジュールに書かれたプロシージャでなければいけません。 また、auto_openで書かなければ最初から機能しなかったと思います。 'ヘルプキー無効にする例 Sub auto_open() Application.OnKey "{F1}", "TEST" End Sub Sub TEST() MsgBox "ヘルプ無効" End Sub 記載するのは標準モジュール1つで構いません。 上記のコードを標準モジュールにコピーして保存後、EXCELを再起動させて「F1キー」を押して見て下さい。 (マクロを有効にするのをお忘れ無く) 今回の場合は、Application.OnKey "{F1}", "Sheet1_F1" ですが・・・ auto_open()というサブプロシジャーは、エクセル起動時に実行が予約されている名前で、 VBAとしてはブックが開かれた時、一度だけ実行します。 エクセル本来の機能に戻すには、 Application.Onkey "{F1}" と、プロシージャの部分を省略すると、エクセルの通常の機能へ戻るのですが、 面倒であれば、そのままエクセル自体を終了すれば問題ありません。 ただし、上記VBAを含むブックを読み込んだエクセル自体を終了せずに、 VBAを含まない、別のブックを読み込んでも機能はキャンセルされませんので注意が必要です。 'ブックのみを閉じる時、ヘルプキーを有効にする例 Sub auto_close() Application.OnKey "{F1}" End Sub 上記はブックを閉じる時ですが、考え方は、auto_open()と同じです。 auto_open、auto_close は、特定のブックで初期設定や自動保存など 便利に使える(正常起動、正常終了の場合ですが)ものですが、 扱いには注意して下さい。 さわらなくて良いメニューまで非表示にしてしまった経験者です(^^;;
補足
Application.OnKey "{F1}", "Sheet1_F1" は、auto_open() に記述しています。 説明がわかりづらかったようです。 [Tab][Enter]で各項目に移動した直後は [F1] を押すと、Sheet1_F1 を実行するのですが、各項目上で入力途中で("1"と入力した直後に) [F1] を押すと、なぜか、ヘルプが起動してしまうのです。