- Home ›
- Excel VBA入門 ›
- 入力フォームの作成
テキストボックスの利用
フォーム上で文字を入力したり表示したりするために利用するテキストボックスの利用方法について解説します。
(2022 年 06 月 16 日公開 / 2022 年 06 月 16 日更新)
目次
テキストボックスを作成する
テキストボックスを作成する方法を見ていきます。テキストボックスを作成するにはツールボックス上で下記のアイコンをクリックします。
アイコンをクリックした後でフォーム上でマウスをドラッグしてテキストボックスを作成します。
オブジェクト名の設定
VBAから操作するにあたってテキストボックスのオブジェクト名を設定しておきます。テキストボックスのプロパティウィンドウを見てください。
オブジェクト名はプロパティウィンドウ上で直接編集が出来ます。今回はオブジェクト名を「nameText」に変更します。
テキストボックスの入力モードを設定する
テキストボックスにフォーカスが設定された時に、日本語入力システムをどの状態にするかを設定します。例えば自動的に全角ひらがなモードに設定することが可能です。
入力モードを設定するには「IMEMode」プロパティを使います。
object.IMEMode = fmIMEMode
コントロールがフォーカスを取得したときの日本語入力システム (IME) の既定の実行時モードを設定します。 object には設定するオブジェクトを指定します。設定する値の fmIMEMode には日本語入力システム (IME) のモードを指定します。
設定できる値は以下の通りです。
定数 | 値 | モード |
---|---|---|
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 をオンにします |
デフォルトでは「fmIMEModeNoControl」が設定されています。その為、テキストボックスがフォーカスを取得しても、IMEはその前に設定されていたモードを変更しません。
実際の使い方としては次のようになります。
sampleForm.nameText.IMEMode = fmIMEModeHiragana
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Load sampleForm sampleForm.nameText.IMEMode = fmIMEModeHiragana sampleForm.Show End Sub
上記マクロを実行すると次のように表示されます。
この時、IMEの状態は以下のようになっています。
ではテキストボックスにフォーカスを移してみます。
するとIMEが全角ひらがな入力モードに自動的に変更になります。
プロパティウィンドウで値を指定する
「IMEMode」プロパティについてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「IMEMode」の箇所の右側にある下矢印をクリックして設定したい値を選択します。
テキストボックスに表示する文字列を設定する
テキストボックスに表示される文字列を設定したり、入力された文字列を参照します。文字列を設定するには「Text」プロパティを使います。
object.Text = String
テキストボックスコントロールに文字列を設定します。 object には設定するオブジェクトを指定します。設定する値の String にはテキストを表す文字列式を指定します。既定値は、長さ 0 の文字列 ("") です。
「Text」プロパティに値を設定したり「Text」プロパティから現在入力されている値を取り出します。
実際の使い方としては次のようになります。
sampleForm.nameText.Text = "初期値"
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Load sampleForm sampleForm.nameText.Text = "初期値" sampleForm.Show End Sub
上記マクロを実行すると次のように表示されます。
プロパティウィンドウで値を指定する
「Text」プロパティについてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「Text」の箇所に直接入力して下さい。
テキストボックスの文字列の水平方向の表示位置
テキストボックスで入力された文字列の表示される位置を設定します。左詰め、中央揃え、右詰めが設定可能です。
表示位置を設定するには「TextAlign」プロパティを使います。
object.TextAlign = fmTextAlign
コントロールの中で文字列をどのように配置するかを設定します。 object には設定するオブジェクトを指定します。設定する値の fmTextAlign にはコントロールの中で文字列をどのように配置するかを指定します。
設定可能な値は次の通りです。
定数 | 値 | 配置位置 |
---|---|---|
fmTextAlignLeft | 1 | 左詰め |
fmTextAlignCenter | 2 | 中央揃え |
fmTextAlignRight | 3 | 右詰め |
実際の使い方としては次のようになります。
sampleForm.nameText.TextAlign = fmTextAlignCenter
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Load sampleForm sampleForm.nameText.TextAlign = fmTextAlignCenter sampleForm.Show End Sub
上記マクロを実行すると次のように表示されます。
今回は中央揃えにしてありますので、文字を入力すると中央に表示されます。
プロパティウィンドウで値を指定する
「TextAlign」プロパティについてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「TextAlign」の箇所の右側にある下向き矢印をクリックして値を選択して下さい。
テキストボックスに入力可能な文字数を設定する
テキストボックスで入力可能な最大文字数を設定します。文字数を設定するには「MaxLength」プロパティを使います。
object.MaxLength = Long
コントロールに入力できる最大文字数を設定します。 object には設定するオブジェクトを指定します。設定する値の Long には大文字数を表す整数値を指定します。
文字数の制限を行わない場合には0を設定します。0以外の数値を設定した場合には入力可能な文字の最大数となります。バイト数ではなく文字数ですので半角文字でも全角文字でも同じように文字数の最大数となります。
実際の使い方としては次のようになります。
sampleForm.nameText.MaxLength = 6
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Load sampleForm sampleForm.nameText.MaxLength = 6 sampleForm.Show End Sub
上記マクロを実行すると次のように表示されます。
最大文字数を6文字に設定しているため、文字は最大で6文字までしか入力できなくなります。
プロパティウィンドウで値を指定する
「MaxLength」プロパティについてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「MaxLength」の箇所に直接文字数を入力して下さい。
フォーカスの取得不可と編集不可の設定
テキストボックスがフォーカスを取得できないようにしたり編集を出来ないように設定します。
フォーカスを取得できないように設定するには「Enabled」プロパティを使います。
object.Enabled = Boolean
コントロールがフォーカスを取得できるかどうか、およびユーザーの操作で発生したイベントに応答するかどうかを設定します。 object には設定するオブジェクトを指定します。設定する値の Boolean にはユーザーの操作で発生したイベントに応答するかどうかを指定します。
「True」を設定するとフォーカスを取得でき、ユーザーの操作で発生したイベントに応答できます。デフォルトの値は「True」です。「False」を設定するとマウス操作やキー操作でコントロールを操作することはできません。ただし、コードを通じて操作することは可能です。
Enabled プロパティに「False」を設定したコントロールは淡色表示されます。
次にテキストボックスを編集出来ないように設定するには「Locked」プロパティを使います。
object.Locked = Boolean
コントロールを編集可能にするかどうかを設定します。 object には設定するオブジェクトを指定します。設定する値の Boolean には省略可能です。コントロールを編集可能にするかどうかを指定します。
「True」を設定すると編集が行えなくなります。「False」を設定すると編集が行えます。デフォルトの値は「False」です。
実際の使い方としては次のようになります。
sampleForm.nameText.Enabled = True sampleForm.nameText.Locked = False
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Load sampleForm sampleForm.nameText.Text = "サンプル" sampleForm.nameText.Enabled = False sampleForm.nameText.Locked = True sampleForm.Show End Sub
上記マクロを実行すると次のように表示されます。
文字が淡色表示され、フォーカスを与えることも入力されているテキストを選択することも出来なくなっています。
プロパティウィンドウで値を指定する
「Enabled」プロパティ及び「Locked」プロパティについてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。例として「Enabled」プロパティについて見てみます。プロパティウィンドウの「Enabled」の箇所の右側にある下矢印をクリックして値を選択して下さい。
テキストボックスで複数行の入力を行えるようにする
テキストボックスで複数の行を表示できるように設定します。テキストボックスで複数行の表示の許可の設定するには「MultiLine」プロパティを使います。
object.MultiLine = Boolean
テキストボックスコントロールで、複数行のテキストの取得と表示を許可するかどうかを設定します。 object には設定するオブジェクトを指定します。設定する値の Boolean には複数行のテキストの取得と表示を許可するかどうかを指定します。
「True」を設定すると複数行のテキストの取得と表示を許可します。「False」を設定すると複数行の取り扱いは出来ません。デフォルトの値は「False」です。
1行に表示しきれないテキストを入力すると自動的に改行されて表示されます。
実際の使い方としては次のようになります。
sampleForm.nameText.MultiLine = True
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Load sampleForm sampleForm.nameText.MultiLine = True sampleForm.Show End Sub
上記マクロを実行すると次のように表示されます。テキストボックスの高さは大きめにしてあります。
文字を入力していくと自動的に改行されて表示されます。
プロパティウィンドウで値を指定する
「MultiLine」プロパティついてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「MultiLine」の箇所の右側にある下矢印をクリックして値を選択して下さい。
タブキーやEnterキーの動作を変更する
テキストボックス上でタブキーやEnterキーを押した場合の動作を変更します。
テキストボックスにフォーカスがある時にタブキーやEnterキーを押すとデフォルトでは次のコントロールにフォーカスが移動します。その為、テキストボックス内でタブキーを入力したい場合や複数行表示が可能になっている時に任意の場所で改行したい時にはキーの動作を変更する必要があります。
テキストボックスでタブキーが押された時の動作を変更するには「TabKeyBehavior」プロパティを使います。
object.TabKeyBehavior = Boolean
編集領域の中で、タブ文字を許可するかどうかを設定します。 object には設定するオブジェクトを指定します。設定する値の Boolean には Tab キーを押した場合の動作を指定します。
「True」を設定するとTabキーが押された時にタブ文字が挿入されます。「False」を設定するとタブオーダーの次のオブジェクトにフォーカスが移ります。デフォルトの値は「False」です。
次にEnterキーが押された時の動作を変更するには「EnterKeyBehavior」プロパティを使います。
object.EnterKeyBehavior = Boolean
テキストボックスコントロールにフォーカスがあるときに、Enter キーを押した場合の動作を設定します。 object には設定するオブジェクトを指定します。設定する値の Boolean には Enter キーを押したときの動作を指定します。
「True」を設定するとEnterキーが押された時に改行します。「False」を設定するとタブオーダーの次のオブジェクトにフォーカスが移ります。デフォルトの値は「False」です。
「EnterKeyBehavior」プロパティの設定は「MultiLine」プロパティに「True」が設定されている場合だけ有効です。
実際の使い方としては次のようになります。
sampleForm.nameText.TabKeyBehavior = True sampleForm.nameText.MultiLine = True sampleForm.nameText.EnterKeyBehavior = True
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Load sampleForm sampleForm.nameText.MultiLine = True sampleForm.nameText.TabKeyBehavior = True sampleForm.nameText.EnterKeyBehavior = True sampleForm.Show End Sub
上記マクロを実行すると次のように表示されます。適当に文字を入力して下さい。
この状態でタブキーを押すとタブ文字が挿入されます。
また任意の場所でEnterキーを押すと、その位置で改行することが出来ます。
プロパティウィンドウで値を指定する
「TabKeyBehavior」プロパティや「EnterKeyBehavior」プロパティについてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。例として「TabKeyBehavior」プロパティについて設定してみます。プロパティウィンドウの「TabKeyBehavior」の箇所の右側にある下矢印をクリックして値を選択して下さい。
テキストボックスにスクロールバーを設置する
テキストボックスにスクロールバーを設置します。テキストボックスでスクロールバーを設置するには「ScrollBars」プロパティを使います。
object.ScrollBars = fmScrollBars
コントロールに垂直スクロールバー、水平スクロールバーを表示するかどうかを設定します。 object には設定するオブジェクトを指定します。設定する値の fmScrollBars にはどのスクロールバーを表示するかを指定します。
設置可能な値は以下の通りです。
定数 | 値 | スクロールバー |
---|---|---|
fmScrollBarsNone | 0 | スクロールバーを表示しません |
fmScrollBarsHorizontal | 1 | 水平スクロールバーを表示します |
fmScrollBarsVertical | 2 | 垂直スクロールバーを表示します |
fmScrollBarsBoth | 3 | 水平スクロールバーと垂直スクロールバーの両方を表示します |
デフォルトの値は「fmScrollBarsNone」となっておりスクロールバーを表示しません。
実際の使い方としては次のようになります。
sampleForm.nameText.ScrollBars = fmScrollBarsVertical
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Load sampleForm sampleForm.nameText.MultiLine = True sampleForm.nameText.ScrollBars = fmScrollBarsVertical sampleForm.Show End Sub
上記マクロを実行すると次のように表示されます。
スクロールバーは必要無い時には表示されていませんが、次のように大量のテキストを入力した場合で1画面で収まらない場合など必要になった時にスクロールバーが表示されます。
プロパティウィンドウで値を指定する
「ScrollBars」プロパティはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「ScrollBars」の箇所の右側にある下矢印をクリックして値を選択して下さい。
テキストボックスの文字列を自動で折り返すかどうかを設定する
テキストボックスに表示される文字列を自動で折り返すかどうかの設定をします。テキストボックスで折り返しの設定をするには「WordWrap」プロパティを使います。
object.WordWrap = Boolean
コントロールの内容を行の最後で、自動的にワードラップさせるかどうかを設定します。 object には設定するオブジェクトを指定します。設定する値の Boolean には文字列の長さに応じて、コントロールの高さまたは幅を広げるかどうかを指定します。
「True」を設定した場合は自動でワードラップします。デフォルトの値は「True」です。「False」を設定した場合は文字列をワードラップしません。
テキストボックスの場合は「MultiLine」プロパティが「False」の場合、「WordWrap」に値を設定しても無視され自動でワードラップはされません。
実際の使い方としては次のようになります。
sampleForm.nameText.MultiLine = True sampleForm.nameText.WordWrap = False
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Load sampleForm sampleForm.nameText.MultiLine = True sampleForm.nameText.ScrollBars = fmScrollBarsHorizontal sampleForm.nameText.WordWrap = False sampleForm.Show End Sub
上記マクロを実行すると次のように表示されます。
設定を行なわない場合は1行に入りきらない文字列を入力すると自動で折り返しが行われていましたが、「WordWrap」プロパティに「False」を設定すると自動で折り返しは行われません。(今回は分かりやすいように横スクロールバーを表示するように設定してあります)。
プロパティウィンドウで値を指定する
「WordWrap」プロパティはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「WordWrap」の箇所の右側にある下矢印をクリックして値を選択して下さい。
テキストボックスの文字色と背景色を設定する
テキストボックスの文字色と背景色を設定します。文字色の設定には「ForeColor」プロパティを使います。
object.ForeColor = Long
オブジェクトの前景色を設定します。 object には対象となるオブジェクトを指定します。設定する値の Long にはオブジェクトの前景色を表す値または定数を指定します。
色を指定するためのLong型の値には数値の変わりにRGB関数を使って色を指定できます。(RGB関数については「RGB関数」を参照して下さい。
実際の使い方としては次のようになります。
sampleForm.nameText.ForeColor = RGB(255, 0, 0)
次は背景色の設定です。背景色の設定には「BackColor」プロパティを使います。
object.BackColor = Long
オブジェクトの背景色を設定します。 object には対象となるオブジェクトを指定します。設定する値の Long にはオブジェクトの背景色を表す値または定数を指定します。
基本的に使い方は前景色の場合と同じです。ただ背景色の場合は背景が非透明になっている必要があります。デフォルトで非透明になっているので特に設定は必要ありませんが明示的に指定する場合には「BackStyle」プロパティを設定します。
object.BackStyle = fmBackStyle
オブジェクトの背景のスタイルを設定します。 object には対象となるオブジェクトを指定します。設定する値の fmBackStyle にはコントロールの背景スタイルを指定します。
指定できる値は次のどちらかです。
定数 | 値 | 背景スタイル |
---|---|---|
fmBackStyleTransparent | 0 | 背景を透明にします |
fmBackStyleOpaque | 1 | 背景を不透明にします |
使い方としては次のようになります。
sampleForm.nameText.BackColor = RGB(255, 0, 0) sampleForm.nameText.BackStyle = fmBackStyleOpaque
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Load sampleForm sampleForm.nameText.ForeColor = RGB(255, 0, 0) sampleForm.nameText.BackColor = RGB(255, 255, 0) sampleForm.Show End Sub
上記マクロを実行すると次のように表示されます。
このように文字の色と背景色を設定できます。
プロパティウィンドウで値を指定する
「ForeColor」プロパティと「BackColor」プロパティに関する設定はプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。では例として背景色の設定を行います。プロパティウィンドウの「BackColor」の箇所の右側にある下矢印をクリックします。
カラーパレットが表示されますので設定したい色を選択します。
-- --
フォーム上で文字を入力したり表示したりするために利用するテキストボックスの利用方法について解説しました。
( Written by Tatsuo Ikura )

著者 / TATSUO IKURA
初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。