トップ > 逆引きで学ぶ ユーザーフォーム&コントロール > 1-32 キーボードの特定のキーを押した時だけ処理を行う

1-32 キーボードの特定のキーを押した時だけ処理を行うユーザーフォーム   2021.11.16

次の書籍の第1章~5章を公開しています。
「Excel VBA 逆引きで学ぶ ユーザーフォーム&コントロール」

目次  前頁   次頁  索引

KeyDownイベントは、フォーム上でキーが押された時に発生し、押されたキーのコードを取得できます。
このイベントを利用すると、特定のキーが押された場合にのみ処理を行うといったことが可能になります。


サンプルコード①

ShiftキーとEnterキーが押された場合に、フォームを閉じる

Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = vbKeyReturn And Shift = 1 Then
        Unload Me
    End If
End Sub

◇KeyCode
引数 KeyCodeはフォーム上で押されたキーのコードを返します。
返されるコードは整数値ですが、対応した組み込み定数が準備されています。
一般的にはそれを利用することが多いです。型としてはvbKey○○になります。
[ MSDN KeyCode組み込み定数一覧 ]

◇Shift
引数 Shiftは、キーが押されている時の[Shift][Ctrl][Alt]キーの状態を返します。
[Shift][Ctrl][Alt]キーにはそれぞれ整数が設定されており、それら2つ以上を押した場合は、それらの整数を加算した数値を返します。


引数 Shift

数値

3つのキーのいずれも押されていない

0

[Shift]

1

[Ctrl]

2

[Shift]+[Ctrl]

3

[Alt]

4

[Shift]+[Alt]

5

[Ctrl]+[Alt]

6

[Shift]+[Ctrl]+[Alt]

7


サンプルコード②

次のサンプルコードは、KeyCodeを無効にして、キーが押されなかったことにします。

Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    KeyCode = 0 'キーコードを無効にする
    Shift = 0 '[Shift] / [Ctrl] / [Alt]を無効にする
End Sub

この処理は、ユーザーフォームでの使用はほぼないと思いますが、テキストボックス等、入力タイプのコントロールのKeyDownイベントで使用されることが多いです。


書籍紹介140以上のサンプルファイル付き!

知りたいがすぐわかる! やりたいがすぐできる!
「Excel VBA 逆引きで学ぶ ユーザーフォーム&コントロール」(Kindle版)
ユーザーフォームを扱えると、VBAでできることが大きく広がります!
本書では、知りたいこと、やりたいことから、逆引きで学びを深められます。

■ 購入:amazon

ページトップへ戻る
Copyright(C) 2009- 坂江 保 All Rights Reserved.