質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • VBA

    2296questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

[VBA]ボタンにFキー等を対応、履歴/複数情報の管理がしたい

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,076

morikawa0208

score 18

最近転職し、Excel VBAにて人事管理を作成しており、
他の人も使えるようユーザーフォームを使用しています。
プログラミング自体始めたばかりなので実現できるかも不明なのですが、教えていただけるとありがたいです。

前提・実現したいこと

①コマンドボタンに対して、Fキー(F1~F12)、ESCを対応させたい
②履歴情報/複数情報の管理をしたい(例:家族情報)
従業員登録画面を開いた際に、従業員番号等をキーにして別タブに登録した内容を一覧表示
追加・修正・削除も行いたい

試したこと

①Excel2013では、キーボード取得イベントプロパティがない(Accessにはあるらしい・・・)
②・最初はユーザーフォーム内にワークシートを表示させようとしたが、ExcelのVerにより不可
・リストボックスに登録した内容を表示させる方法を取ろうとしたが、同じ画面にて登録修正できないことに気づき断念
・[家族情報]ボタンを押すことで[家族情報シート]にジャンプ。同時に基本情報入力欄を非表示
ジャンプした際に、基本情報にて呼び出している従業員の番号をキーとしてフィルターをかけ、
該当社員の家族情報のみ一覧で表示。
追加、削除、変更は通常のExcelワークシート操作と同じ。
→何かほかに簡単な方法はないか

その他

基礎もなく、ただ理想を書いているので変な内容を書いているかもしれませんが、
何卒よろしくお願いいたします。

現状

②について継続して回答お待ちしております。

①について回答して頂いた方のおかげでkydownイベントの取得までこぎつけることができました。
ただ、ボタンが非アクティブ状態(他のテキストボックス等にフォーカスがある状態)では反応しません。。。
ボタンにフォーカスをあてるとFキーで反応します。
心当たりのある方、何卒よろしくお願いいたします

'Fキー割り当て
Private Sub cmd_Kensaku_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

If KeyCode = vbKeyF12 Then    'F12キー
cmd_Kensaku = True
End If
End Sub

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+1

そのコマンドボタンにはマクロが登録されていますか?
それならばマクロにショートカットキーを定義すればできます。
ただしFキー(F1~F12)は割り当てれません。
割り当てられるキーはCtrl+??になります。

もしくはボタンをActiveXコントロールのボタンにして、
プロパティでAcceleratorを設定しCaptionを設定すれば
Alt+??で割り当てることができます。

Fキー(F1~F12)はExcelのショートカットキーとして割り当てられているので、
それを変更するのはよくないかとおもいます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/08/19 16:43

    回答ありがとうございます!

    ファンクションキー1個には登録できないんですね。
    以前はソフトを使っていたのでどうもマウスが煩わしくて・・・。
    プロパティのAcceleratorにFキー設定できなかったので、
    もうすこし調べてみます;-;

    ありがとうございました!

    キャンセル

  • 2016/08/19 16:50

    しらべたらVBAで設定することで、ファンクションキーにもマクロを割り当てれるようです。
    Application.OnKey "{F12}", "マクロ名"
    といった感じです。

    キャンセル

  • 2016/08/19 17:03

    わざわざ調べて頂いてありがとうございます!
    早速試してみたのですが、どうも反応しません・・・

    行おうとしているのは全てユーザーフォーム上のボタンに対してなのですが、
    もしかするとユーザーフォーム上は反応しないのでしょうか?
    OnKeyというものを知らなかったので勉強になりました!
    これベースで検索してみます!

    キャンセル

  • 2016/08/19 17:10

    ユーザーフォームでしたか。てっきりシート上からかと思ってました。
    ユーザーフォームからならUserForm_KeyPressかUserForm_KeyDownですが、
    ボタンなどのコントロールがある場合UserFormにはKeyPreviewプロパティがないので、
    すべてのコントロールにKeyDownを埋め込むという荒業になるかも…。

    キャンセル

  • 2016/08/19 17:25

    質問の仕方が悪く申し訳ありませんでした。
    おかげで私もKeyDownというものまでたどり着きました!
    ボタン自体はそう多くない(登録削除終了など位)ので、全てに設定していくことにします!
    何度もご親切にありがとうございましたm._.m

    キャンセル

  • 2016/08/19 18:00 編集

    横から失礼します。

    全てのKeyDownを処理する力技とどちらが楽か?という話になりますが、こんな方法もあります。
    ⇒コントロールのイベントを共通化
    http://thom.hateblo.jp/entry/2016/03/11/204324

    参考になれば幸いです。

    キャンセル

check解決した方法

0

どうしてもユーザフォーム上で、対象ボタンがフォーカスされていない状態でも反応させられず、
ひとまずはプロパティのAcceleratorにて対応することにしました。
将来的にはKeyDown等にて、FキーとESCを使った操作にしたい・・・

回答して頂いた皆様ありがとうございました!

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • VBA

    2296questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。