- 「あぁ、もう!Enterで次に進んでよ……」
- 「Excelのユーザーフォームを作ってみたのはいいけれど、入力するたびにマウスを持って次の項目をクリックするの、正直めちゃくちゃ面倒くさい。Enterキーを押したらパッと次の入力欄に飛んで、終わったらEscキーでサッと閉じられたら最高なのに。」
- 「逆に効率悪くなってない……?」
そんな風に思ったことはありませんか?
今回は、初心者の方でもコピペで簡単に実装できる「Enterキーで移動」「Escキーで閉じる」設定を分かりやすく解説します!
なぜ「Enterキー移動」が重要なのか?
データ入力の際、手が「キーボード」と「マウス」を行き来することは、想像以上のタイムロスにつながります。
たとえば、キーボードからマウスへ持ち替えて操作を戻すのに約2秒かかると仮定してみましょう。
1つのフォームに10個の入力項目があり、1日に100件のデータを入力する場合、1日30分以上も「マウスを持つ時間」だけで損をしている計算になります。これをお昼休みに充てられたら嬉しいですよね。
Enterキーで次の項目へ移動させる方法
Excelのユーザーフォームでは、通常Enterキーは「ボタンの実行」に使われます。これを「次の項目への移動(Tabキーと同等の役割)」に変更してみましょう。
VBAには「イベント」という考え方があります。今回は「Enterキーが押されたら(イベント)、次の項目へ移動する(処理)」という命令を設定します。
【コピペで使えるVBAコード】
入力欄(TextBox1)に以下のコードを貼り付けてみてください。
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
' もし押されたキーが「Enterキー」だったら
If KeyCode = 13 Then
' 次の入力項目(TextBox2)にフォーカスを移す
TextBox2.SetFocus
End If
End Sub
KeyCode = 13というのは、PCがEnterキーを認識するための背番号のようなものです。
Escキーでフォームを閉じる方法
入力を途中でやめたい時、わざわざ画面右上の「×」ボタンまでマウスを動かすのは少し手間ですよね。
この問題は、フォーム内にあるボタンのプロパティ(設定画面)で「Cancel属性」を活用すると簡単に解決できます。
- フォームにある「閉じる」ボタン(CommandButton)を選択します。
- 左側のプロパティウィンドウにある「Cancel」という項目を「True」にします。
これだけで、Escキーが押された際に対象のボタンが自動的に実行されるようになります。あとはボタンに以下のコードを記述しておけば完了です。
' 自分自身(フォーム)を閉じる
Unload Me
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント