2018年11月17日スポンサーリンクコマンドボタンクリックではなく、ファンクションキーを押下することで処理を実行したいことがあります。マウスでコマンドボタンまでカーソルを移動してクリックする数秒を考えると、ボタン1つ押下するだけで処理が実行できた方が効率的です。今回はVBAでファンクションキー押下時の処理を制御する方法をご紹介します。各入力項目はENTERキーまたはTABキーで移動できるように設計するほうが入力項目の多いフォームの場合、断然効率的です。タブキーの移動順は大変重要ですのでフォームが完成したらタブキーで入力したい順番通りにフォーカスが移動することを確認しましょう。スポンサーリンク目次ACCESSのキー定数フォームのキーイベント取得プロパティをONにするファンクションキーイベントを取得する補助キーとの組み合わせでイベントを取得するACCESSのキー定数まずはAccessでキー割り当てによく使う定数を確認します。数字やアルファベットなどの入力にもそれぞれキー定数が割り当てられています。vbKeyDivideフォームのキーイベント取得プロパティをONにするVBAでキーイベントの処理を記載しているのにキー押下に反応しない場合は、フォームのプロパティ【キーイベント取得】が「いいえ」になっていないか確認してください。このプロパティが「はい」になっていないと、キークリック時イベントに処理を記載していても動作しません。ファンクションキーイベントを取得する以下はF2~F12までのキー押下イベントでそれぞれのメッセージを表示するサンプルプログラムです。KeyDownイベントの引数KeyCodeをファンクションキーイベントの定数と比較して処理を記述します。処理したいファンクションキーが1つや2つならIF文で処理してもOKです。CASE文で処理してください。F1キーにはAccessのヘルプが割り当てられているので通常は使用しません。Sub補助キーとの組み合わせでイベントを取得するKeyDownイベントではKeyCodeの他にもう一つ引数を持っています。この変数で「Shift」「Ctrl」「Alt」などの補助キーが同時に押下されているかどうかを判断できます。以下のサンプルプログラムではF5キーの押下処理で、全ての補助キーの組み合わせでメッセージを出し分けるようにしています。Sub引数Shiftはビットフィールドになっています。acAltMaskこれらのキーを組み合わせる(合計する)ことにより、複数のキーの組み合わせも判断できます。複合キーの組み合わせは0を含めて全部で8通りになります。先のサンプルプログラムではShift変数の8通りのCASEを全て(0~7まで)記述しています。3定数が用意されていますので、CASE文には数値ではなく【acShiftMask+acCtrlMask】のように記述してもOKです。このように補助キーを組み合わせて入力されたキーを取得できますので、隠しコマンドを記述することもできますね。情報システム部門のご相談を承ります。BIツール(QlikSense/QlikView)の開発です。現在はCMSを利用したホームページの作成にも力を入れています。日々巧妙化する悪意ある攻撃。狙われるのは大企業だけではありません。セキュリティ対策が追い付いていない中小企業は犯罪者の恰好の餌食です。情報セキュリティ部門がない、詳しい人がいない...。アズビーパートナーズアズビーパートナーズVBAで数字を文字列に変換する際に便利な関数をあれこれご紹介します。アズビーパートナーズアズビーパートナーズ取り込んだデータに重複情報がある場合、min関数やmax関数を使って1データのみ取り出すことがありますね。アズビーパートナーズアズビーパートナーズ今回は指定日付の週の月曜日を求めます。現在日までの今週の売上などを集計したい場合に使えます。VBAでファンクションキーを割り当てるアズビーパートナーズについてアズビーパートナーズはこれまでの社内SEの経験から、あなたの会社の業務の効率化・システム化をサポートします。企業の抱える悩みや解決策を一緒に考え、ベストな提案ができるスポット的な社内SEとしてお役に立ちたいと考えています。アズビーパートナーズ。