トップ > 逆引きで学ぶ ユーザーフォーム&コントロール > 1-35 キーが押されている間フォームを移動する

1-35 キーが押されている間フォームを移動するユーザーフォーム   2021.11.16

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

目次  前頁   次頁  索引

KeyPressイベントは、ANSIコードに対応するキーが押されると発生します。
近い役割をもったKeyDownイベントとは受け取れるキーコードの数が異なり、ANSIに対応したキーのみコードを受け取れます。

例えば、アルファベットやテンキー等は、KeyDowm/KeyPressの両イベントでキーコードを受け取れますが、ファンクションキーやカーソルキーは、KeyPressイベントでは受け取れません。

両イベントを利用する場合、イベントの発生順番は、KeyDown→KeyPressになります。


サンプルコード

バックスペースキーを押し続けると、フォームが左に移動し、スペースキー押し続けると、フォームが右に移動する※

Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = 8 Then
        Me.Left = WorksheetFunction.Max(Me.Left - 1, Application.Left)
    ElseIf KeyAscii = 32 Then
        Me.Left = WorksheetFunction.Min(Me.Left + 1, Application.Width - Me.Width)
    End If
End Sub

※ フォームにフォーカスがないと移動しません

◇KeyAscii
引数 KeyAsciiはフォーム上で押されたANSIに対応したキーのコードを返します。
返されるコードは整数値です。キーコードはDebug.Print等で確認できます。
ANSIは文字コードであり American National Standards Instituteの略称です。
ASCIIはANSIの定める規格のひとつです。


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

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

■ 購入:amazon

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