VBAでのテキストボックス(TextBox)の使い方とプロパティおよびイベント
Excel VBA からテキストボックス(TextBox)コントロールを利用する方法です。テキストボックスはユーザーにテキストを入力してもらうための入力エリアを提供する場合に使用されるコントロールです。ここでは Excel のユーザーフォームで設置できるテキストボックスを VBA から使用する方法と、テキストボックスで設定可能なプロパティおよびイベントの一覧について解説します。
(Last modified: )
目次
- テキストボックスのプロパティ一覧
- テキストボックスに入力されたテキストを取得する(Text)
- テキストボックスのIMEモードを設定する(IMEMode)
- テキストボックスの水平方法の揃え方を設定する(TextAlign)
- テキストボックスに入力できる最大文字数を設定する(MaxLength)
- テキストボックスの表示位置を設定する(Top,Left)
- テキストボックスの幅と高さを設定する(Width,Height)
- テキストボックスの幅で折り返すかどうか設定する(WordWrap)
- テキストボックスで複数行の入力を許可する(MultiLine)
- テキストボックスにスクロールバーを表示する(ScrollBars)
- テキストボックスのイベント一覧
テキストボックスのプロパティ一覧
ユーザーフォームに設置するテキストボックスで利用可能なプロパティ一覧は次の通りです。
AutoSize AutoTab AutoWordSelect BackColor BackStyle BorderColor BorderStyle ControlSource ControlTipText DragBehavior Enabled EnterFieldBehavior EnterKeyBehavior Font ForeColor Height HelpContextID HideSelection IMEMode IntegralHeight Left Locked MaxLength MouseIcon MousePointer MultiLine PasswordChar ScrollBars SelectionMargin SpecialEffect TabIndex TabKeyBehavior TabStop Tag Text TextAlign Top Value Visible Width WordWrap
テキストボックスの既定のプロパティは Value
プロパティです。
いくつかのプロパティについてはこのあと簡単に解説します。
テキストボックスに入力されたテキストを取得する(Text)
テキストボックスの初期値としてテキストを設定したり、テキストボックスに入力されたテキストを取得するには Text
プロパティに値を設定または取得します。
テキストボックスの初期値を設定するには次のように記述します。
オブジェクト.Text [= String ]
テキストボックスに表示する文字列を代入してください。
具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャにコードを記述し、テキストボックスに初期値のテキストを設定しています。
Option Explicit Private Sub UserForm_Initialize() TextBox1.Text = "名前を入力" End Sub
ユーザーフォームを表示すると、表示されたテキストボックスに指定した文字列が表示されているのが確認できます。
入力された文字列を取得する
またテキストボックスに入力された文字列を取得するには Text
プロパティの値を参照されてください。例えばコマンドボタンがクリックされると、テキストボックスに入力された文字列を取得してメッセージボックスで表示するには次のように記述します。
Option Explicit Private Sub CommandButton1_Click() MsgBox TextBox1.Text End Sub
ユーザーフォームを表示し、表示されたテキストボックスに文字列を入力したあとでコマンドボタンをクリックしてください。入力した文字列を取得しメッセージボックスで表示します。
テキストボックスのIMEモードを設定する(IMEMode)
テキストボックスにフォーカスが移動したときに、日本語入力方式(IME)を指定したモードに変更するには IMEMode
プロパティに値を設定します。
オブジェクト.IMEMode [= fmIMEMode ]
設定可能な値には次の種類があります。
定数 | 値 | 説明 |
---|---|---|
fmIMEModeNoControl | 0 | IME を制御しない |
fmIMEModeOn | 1 | IMEをオンにする |
fmIMEModeOff | 2 | IMEをオフにする(英語モード) |
fmIMEModeDisable | 3 | IMEをオフにする(キーボードでIMEをオンにできない) |
fmIMEModeHiragana | 4 | 全角ひらがなモードでIMEをオンにする |
fmIMEModeKatakana | 5 | 全角カタカナモードでIMEをオンにする |
fmIMEModeKatakanaHalf | 6 | 半角カタカナモードでIMEをオンにする |
fmIMEModeAlphaFull | 7 | 全角英数字モードでIMEをオンにする |
fmIMEModeAlpha | 8 | 半角英数字モードでIMEをオンにする |
fmIMEModeHangulFull | 9 | 全角ハングルモードでIMEをオンにする |
fmIMEModeHangul | 10 | 半角ハングルモードでIMEをオンにする |
具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャにコードを記述し、テキストボックスの IME モードを「全角ひらがなモード」に設定しています。
Option Explicit Private Sub UserForm_Initialize() TextBox1.IMEMode = fmIMEModeHiragana End Sub
ユーザーフォームを表示し、表示されたテキストボックスにフォーカスを移すと、 IME が「全角ひらがなモード」に設定されることが確認できます。
テキストボックスの水平方法の揃え方を設定する(TextAlign)
テキストボックスに表示されるテキストの水平方向の揃え方を設定するには TextAlign
プロパティに値を設定します。
オブジェクト.TextAlign [= fmTextAlign ]
設定可能な値には次の種類があります。
定数 | 値 | 説明 |
---|---|---|
fmTextAlignLeft | 1 | 左揃え |
fmTextAlignCenter | 2 | 中央揃え |
fmTextAlignRight | 3 | 右揃え |
具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャにコードを記述し、テキストボックスの水平方向の揃え方を右揃えに設定しています。
Option Explicit Private Sub UserForm_Initialize() TextBox1.TextAlign = fmTextAlignRight End Sub
ユーザーフォームを表示すると、テキストボックスの水平方向の揃え方が右揃えになっているのが確認できます。
テキストボックスに入力できる最大文字数を設定する(MaxLength)
テキストボックスに入力できる最大文字数を設定するするには MaxLength
プロパティを使用します。
オブジェクト.MaxLength [= Long ]
対象のオブジェクトの MaxLength
プロパティに対して最大文字数を表す長整数型の値を代入します。なお単位は文字です。半角文字でも全角文字でも同じ扱いとなります。
具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャにコードを記述し、入力可能な最大文字数を 5 に設定しています。
Option Explicit Private Sub UserForm_Initialize() TextBox1.MaxLength = 5 End Sub
ユーザーフォームを表示すると、表示されたテキストボックスには最大でも 5 文字までしかテキストを入力できないのが確認できます。なお単位は文字数なので半角文字でも全角文字でも 5 文字まで入力できます。
テキストボックスの表示位置を設定する(Top,Left)
テキストボックスが表示される位置を設定するには Top
プロパティと Left
プロパティに値を設定します。
オブジェクト.Top [= Single ] オブジェクト.Left [= Single ]
Top
プロパティにはユーザーフォームの上端からテキストボックスの上端までの距離、 Left
プロパティにはユーザーフォームの左端からテキストボックスの左端までの距離をそれぞれ単精度浮動小数点型の数値で代入します。単位はポイントです。
具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャにコードを記述し、テキストボックスの位置を設定しています。
Option Explicit Private Sub UserForm_Initialize() TextBox1.Top = 100 TextBox1.Left = 80 End Sub
ユーザーフォームを表示すると、表示されたテキストボックスが指定した位置で表示されているのが確認できます。
テキストボックスの幅と高さを設定する(Width,Height)
テキストボックスの幅と高さを設定するには幅については Width
プロパティ、高さについては Height
プロパティに値を設定します。
オブジェクト.Width [= Single ] オブジェクト.Height [= Single ]
幅および高さをあらわす単精度浮動小数点型の数値を代入してください。単位はポイントです。
具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャにコードを記述し、テキストボックスの幅と高さを設定しています。
Option Explicit Private Sub UserForm_Initialize() TextBox1.Width = 170 TextBox1.Height = 70 End Sub
ユーザーフォームを表示すると、表示されたテキストボックスの幅および高さが指定した値に設定されているのが確認できます。
テキストボックスの幅で折り返すかどうか設定する(WordWrap)
テキストボックスの幅を超える長さのテキストを入力したときに、テキストボックスの幅で自動的に折り返るかどうか設定するには WordWrap
プロパティに値を設定します。
オブジェクト.WordWrap [= Boolean ]
True を設定すると自動で折り返されます。「False」を設定すると折り返されずにそのまま同じ行で入力されます。(なお WordWrap
プロパティに「True」を設置して折り返しを有効にするには、このあとで解説する MultiLine
プロパティが「True」である必要があります)。
具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャにコードを記述し、自動で折り返すように設定しています。
Option Explicit Private Sub UserForm_Initialize() TextBox1.WordWrap = True End Sub
ユーザーフォームを表示し、表示されたテキストボックスに幅を超える長さのテキストを入力すると、テキストボックスの幅で自動的に折り返されて表示されているのが確認できます。
なお WordWrap
プロパティに「False」を設定して同じテキストを入力してみると、テキストボックスの幅で折り返されずにそのまま同じ行で表示されます。
Option Explicit Private Sub UserForm_Initialize() TextBox1.WordWrap = False End Sub
テキストボックスで複数行の入力を許可する(MultiLine)
テキストボックスの入力画面で改行文字を入力して複数行の入力を許可するには MultiLine
プロパティに値を設定します。
オブジェクト.MultiLine [= Boolean ]
True を設定すると改行文字の入力が可能となり複数行の入力が行えます。「False」を設定すると複数行の入力が行えなくなります。(テキストボックス内で改行するには Shift
+ Enter
キーを押します)。
具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャにコードを記述し、複数行の入力を許可しています。
Option Explicit Private Sub UserForm_Initialize() TextBox1.MultiLine = True End Sub
ユーザーフォームを表示し、表示されたテキストボックスに入力したテキストの途中で改行を行うと、改行されて次の行から入力できるようになっているのが確認できます。
なお MultiLine
プロパティに「False」を設定すると、改行のためのキーを押しても改行されません。
テキストボックスにスクロールバーを表示する(ScrollBars)
テキストボックスで、テキストボックスの幅に収まらない長さのテキストを入力した場合や、テキストボックスの高さに収まらない長さのテキストを入力した場合にスクロールバーを表示するかどうか設定するには ScrollBars
プロパティに値を設定します。
オブジェクト.ScrollBars [= fmScrollBars ]
設定可能な値には次の種類があります。
定数 | 値 | 説明 |
---|---|---|
fmScrollBarsNone | 0 | スクロールバーを表示しない |
fmScrollBarsHorizontal | 1 | 水平スクロールバーを表示する |
fmScrollBarsVertical | 2 | 垂直スクロールバーを表示する |
fmScrollBarsBoth | 3 | 水平と垂直の両方のスクロールバーを表示する |
例えば垂直スクロールバーだけを表示するように設定するには ScrollBars
プロパティに fmScrollBarsVertical
を設定します。なお水平および垂直スクロールバーは必要になったときにだけ表示されます。
具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャにコードを記述し、必要になったときに垂直スクロールバーが表示されるように設定しています。
Option Explicit Private Sub UserForm_Initialize() TextBox1.MultiLine = True TextBox1.ScrollBars = fmScrollBarsVertical End Sub
ユーザーフォームを表示し、表示されたテキストボックスに入力したテキストの途中で改行を行っていくと、テキストボックスの高さに収まらなくなった時点で垂直スクロールバーが表示されるのが確認できます。
テキストボックスのイベント一覧
テキストボックスで発生するイベント一覧は次の通りです。
AfterUpdate BeforeDragOver BeforeDropOrPaste BeforeUpdate Change DblClick DropButtonClick Enter Error Exit KeyDown KeyPress KeyUp MouseDown MouseMove MouseUp
テキストボックスの既定のイベントは Change
イベントです。
-- --
Excel のユーザーフォームで設置できるテキストボックスを VBA から使用する方法と、テキストボックスで設定可能なプロパティおよびイベントの一覧について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。