はじめに
VBAのユーザーフォームで、ユーザーからの文字入力を受け付けるために不可欠なのが「テキストボックス」コントロールです。
テキストボックスは、ただ文字を入力させるだけでなく、そのプロパティをVBAコードで設定することで、より親切で高機能な入力欄を作成できます。例えば、以下のような設定が可能です。
- 入力例となる初期値をあらかじめ表示しておく。
- パスワード入力用に、文字を
*
などで隠す。 - 会員IDなど、入力できる文字数を制限する。
- 半角英数字の入力欄で、日本語入力モード(IME)を自動でオフにする。
この記事では、これらの便利なテキストボックスの主要なプロパティと、その設定方法を分かりやすく解説します。
テキストボックスのプロパティ設定サンプルコード
これらの設定は、ユーザーフォームが表示される直前の UserForm_Initialize
イベント内で行うのが一般的です。
この例では、InputForm
というフォームに配置された複数のテキストボックスに、それぞれ異なる設定を適用します。
ユーザーフォームのコード
' フォームが初期化されるときに実行されるイベント
Private Sub UserForm_Initialize()
' --- Name_TextBox: 初期値の設定 ---
With Me.Name_TextBox
' .Text プロパティで表示する初期文字列を設定
.Text = "(ここに氏名を入力)"
' テキストボックスがフォーカスを受け取ったときに全選択状態にするための準備
' .SelStart で選択開始位置を、.SelLength で選択する長さを指定
.SelStart = 0
.SelLength = .TextLength
End With
' --- Password_TextBox: パスワード入力欄の設定 ---
With Me.Password_TextBox
' .PasswordChar プロパティで、入力された文字の代わりに表示する文字を設定
.PasswordChar = "*"
' .IMEMode プロパティで、IMEをオフ(半角英数入力モード)に設定
.IMEMode = fmIMEModeOff ' fmIMEModeAlpha でも可
End With
' --- UserID_TextBox: 入力文字数の制限 ---
With Me.UserID_TextBox
' .MaxLength プロパティで、入力可能な最大文字数を設定
.MaxLength = 8
End With
End Sub
実行前の準備
InputForm
という名前のユーザーフォームを作成します。- フォーム上に「テキストボックス」を3つ配置します。
- それぞれの
(Name)
プロパティを、コードに合わせてName_TextBox
,Password_TextBox
,UserID_TextBox
に変更します。 - フォームのコードモジュールに上記のコードを貼り付け、フォームを表示すると、各設定が適用されたテキストボックスが表示されます。
コード(プロパティ)の解説
.Text
テキストボックスに表示される文字列を制御します。初期の入力案内を表示したり、処理結果を書き出したりする際に使用します。
.SelStart
,.SelLength
,.TextLength
:.Text
と合わせて使うことで、ユーザーがテキストボックスをクリックした際に、初期値を全選択状態にできます。.SelStart = 0
は「先頭から」、.SelLength = .TextLength
は「テキストの全長分」を選択するという意味です。これにより、ユーザーは案内文を消す手間なく、すぐに入力を始められます。
.PasswordChar
このプロパティに文字(例: *
や ●
)を設定すると、テキストボックスに入力された文字がその指定文字に置き換えられて表示されます。パスワードのような機密情報を入力させる際に必須のプロパティです。
.IMEMode
ユーザーがコントロールを選択した際の、日本語入力システム(IME)のモードを制御します。
fmIMEModeOff
: IMEをオフにします(直接入力モード)。fmIMEModeOn
: IMEをオンにします(ひらがな入力モード)。fmIMEModeAlpha
: 半角英数字入力モード。fmIMEModeHiragana
: ひらがな入力モード。fmIMEModeKatakana
: カタカナ入力モード。
IDやメールアドレスの入力欄では fmIMEModeOff
に設定しておくと、ユーザーが入力モードを切り替える手間を省けます。
.MaxLength
ユーザーが入力できる最大文字数を整数で指定します。0
を設定すると、文字数制限はなくなります(デフォルト)。郵便番号や会員IDなど、桁数が決まっている情報の入力欄に設定すると、入力ミスを防ぐのに役立ちます。
まとめ
今回は、ユーザーフォームのテキストボックスをより使いやすくするための、主要なプロパティ設定について解説しました。
.Text
: 初期値や結果の表示。.PasswordChar
: パスワードのマスク。.IMEMode
: 入力モードの制御。.MaxLength
: 最大文字数の制限。
これらのプロパティを適切に設定することで、ユーザーの入力ミスを減らし、ストレスなく操作できる、より完成度の高い入力フォームを作成することができます。