テキストボックスの利用

フォーム上で文字を入力したり表示したりするために利用するテキストボックスの利用方法について解説します。

(2022 年 06 月 16 日公開 / 2022 年 06 月 16 日更新)

テキストボックスを作成する

テキストボックスを作成する方法を見ていきます。テキストボックスを作成するにはツールボックス上で下記のアイコンをクリックします。

テキストボックスを作成する(1)

アイコンをクリックした後でフォーム上でマウスをドラッグしてテキストボックスを作成します。

テキストボックスを作成する(2)

テキストボックスを作成する(3)

オブジェクト名の設定

VBAから操作するにあたってテキストボックスのオブジェクト名を設定しておきます。テキストボックスのプロパティウィンドウを見てください。

テキストボックスを作成する(4)

オブジェクト名はプロパティウィンドウ上で直接編集が出来ます。今回はオブジェクト名を「nameText」に変更します。

テキストボックスを作成する(5)

テキストボックスの入力モードを設定する

テキストボックスにフォーカスが設定された時に、日本語入力システムをどの状態にするかを設定します。例えば自動的に全角ひらがなモードに設定することが可能です。

入力モードを設定するには「IMEMode」プロパティを使います。

object.IMEMode = fmIMEMode

コントロールがフォーカスを取得したときの日本語入力システム (IME) の既定の実行時モードを設定します。 object には設定するオブジェクトを指定します。設定する値の fmIMEMode には日本語入力システム (IME) のモードを指定します。

設定できる値は以下の通りです。

定数モード
fmIMEModeNoControl0IME のモードを変更しません
fmIMEModeOn1IME をオンにします
fmIMEModeOff2IME をオフにして英語モードにします
fmIMEModeDisable3IME をオフにします。このモードにするとユーザーは、キー操作によっても IME をオンにすることができなくなります
fmIMEModeHiragana4全角ひらがなモードで IME をオンにします
fmIMEModeKatakana5全角カタカナ モードで IME をオンにします
fmIMEModeKatakanaHalf6半角カタカナ モードで IME をオンにします
fmIMEModeAlphaFull7全角英数モードで IME をオンにします
fmIMEModeAlpha8半角英数モードで IME をオンにします
fmIMEModeHangulFull9全角ハングル モードで IME をオンにします
fmIMEModeHangul10半角ハングル モードで IME をオンにします

デフォルトでは「fmIMEModeNoControl」が設定されています。その為、テキストボックスがフォーカスを取得しても、IMEはその前に設定されていたモードを変更しません。

実際の使い方としては次のようになります。

sampleForm.nameText.IMEMode = fmIMEModeHiragana

サンプルプログラム

では簡単なサンプルで試してみましょう。

Sub テスト()
    Load sampleForm
    sampleForm.nameText.IMEMode = fmIMEModeHiragana
    sampleForm.Show
End Sub

上記マクロを実行すると次のように表示されます。

テキストボックスの入力モードを設定する(1)

この時、IMEの状態は以下のようになっています。

テキストボックスの入力モードを設定する(2)

ではテキストボックスにフォーカスを移してみます。

テキストボックスの入力モードを設定する(3)

するとIMEが全角ひらがな入力モードに自動的に変更になります。

テキストボックスの入力モードを設定する(4)

プロパティウィンドウで値を指定する

「IMEMode」プロパティについてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「IMEMode」の箇所の右側にある下矢印をクリックして設定したい値を選択します。

テキストボックスの入力モードを設定する(5)

テキストボックスに表示する文字列を設定する

テキストボックスに表示される文字列を設定したり、入力された文字列を参照します。文字列を設定するには「Text」プロパティを使います。

object.Text = String

テキストボックスコントロールに文字列を設定します。 object には設定するオブジェクトを指定します。設定する値の String にはテキストを表す文字列式を指定します。既定値は、長さ 0 の文字列 ("") です。

「Text」プロパティに値を設定したり「Text」プロパティから現在入力されている値を取り出します。

実際の使い方としては次のようになります。

sampleForm.nameText.Text = "初期値"

サンプルプログラム

では簡単なサンプルで試してみましょう。

Sub テスト()
    Load sampleForm
    sampleForm.nameText.Text = "初期値"
    sampleForm.Show
End Sub

上記マクロを実行すると次のように表示されます。

テキストボックスに表示する文字列を設定する(1)

プロパティウィンドウで値を指定する

「Text」プロパティについてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「Text」の箇所に直接入力して下さい。

テキストボックスに表示する文字列を設定する(2)

テキストボックスの文字列の水平方向の表示位置

テキストボックスで入力された文字列の表示される位置を設定します。左詰め、中央揃え、右詰めが設定可能です。

表示位置を設定するには「TextAlign」プロパティを使います。

object.TextAlign = fmTextAlign

コントロールの中で文字列をどのように配置するかを設定します。 object には設定するオブジェクトを指定します。設定する値の fmTextAlign にはコントロールの中で文字列をどのように配置するかを指定します。

設定可能な値は次の通りです。

定数配置位置
fmTextAlignLeft1左詰め
fmTextAlignCenter2中央揃え
fmTextAlignRight3右詰め

実際の使い方としては次のようになります。

sampleForm.nameText.TextAlign = fmTextAlignCenter

サンプルプログラム

では簡単なサンプルで試してみましょう。

Sub テスト()
    Load sampleForm
    sampleForm.nameText.TextAlign = fmTextAlignCenter
    sampleForm.Show
End Sub

上記マクロを実行すると次のように表示されます。

テキストボックスの文字列の水平方向の表示位置(1)

今回は中央揃えにしてありますので、文字を入力すると中央に表示されます。

テキストボックスの文字列の水平方向の表示位置(2)

プロパティウィンドウで値を指定する

「TextAlign」プロパティについてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「TextAlign」の箇所の右側にある下向き矢印をクリックして値を選択して下さい。

テキストボックスの文字列の水平方向の表示位置(3)

テキストボックスに入力可能な文字数を設定する

テキストボックスで入力可能な最大文字数を設定します。文字数を設定するには「MaxLength」プロパティを使います。

object.MaxLength = Long

コントロールに入力できる最大文字数を設定します。 object には設定するオブジェクトを指定します。設定する値の Long には大文字数を表す整数値を指定します。

文字数の制限を行わない場合には0を設定します。0以外の数値を設定した場合には入力可能な文字の最大数となります。バイト数ではなく文字数ですので半角文字でも全角文字でも同じように文字数の最大数となります。

実際の使い方としては次のようになります。

sampleForm.nameText.MaxLength = 6

サンプルプログラム

では簡単なサンプルで試してみましょう。

Sub テスト()
    Load sampleForm
    sampleForm.nameText.MaxLength = 6
    sampleForm.Show
End Sub

上記マクロを実行すると次のように表示されます。

テキストボックスに入力可能な文字数を設定する(1)

最大文字数を6文字に設定しているため、文字は最大で6文字までしか入力できなくなります。

プロパティウィンドウで値を指定する

「MaxLength」プロパティについてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「MaxLength」の箇所に直接文字数を入力して下さい。

テキストボックスに入力可能な文字数を設定する(2)

フォーカスの取得不可と編集不可の設定

テキストボックスがフォーカスを取得できないようにしたり編集を出来ないように設定します。

フォーカスを取得できないように設定するには「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

上記マクロを実行すると次のように表示されます。

フォーカスの取得不可と編集不可の設定(1)

文字が淡色表示され、フォーカスを与えることも入力されているテキストを選択することも出来なくなっています。

プロパティウィンドウで値を指定する

「Enabled」プロパティ及び「Locked」プロパティについてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。例として「Enabled」プロパティについて見てみます。プロパティウィンドウの「Enabled」の箇所の右側にある下矢印をクリックして値を選択して下さい。

フォーカスの取得不可と編集不可の設定(2)

テキストボックスで複数行の入力を行えるようにする

テキストボックスで複数の行を表示できるように設定します。テキストボックスで複数行の表示の許可の設定するには「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

上記マクロを実行すると次のように表示されます。テキストボックスの高さは大きめにしてあります。

テキストボックスで複数行の入力を行えるようにする(1)

文字を入力していくと自動的に改行されて表示されます。

テキストボックスで複数行の入力を行えるようにする(2)

プロパティウィンドウで値を指定する

「MultiLine」プロパティついてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「MultiLine」の箇所の右側にある下矢印をクリックして値を選択して下さい。

テキストボックスで複数行の入力を行えるようにする(3)

タブキーや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キーの動作を変更する(1)

この状態でタブキーを押すとタブ文字が挿入されます。

タブキーやEnterキーの動作を変更する(2)

また任意の場所でEnterキーを押すと、その位置で改行することが出来ます。

タブキーやEnterキーの動作を変更する(3)

プロパティウィンドウで値を指定する

「TabKeyBehavior」プロパティや「EnterKeyBehavior」プロパティについてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。例として「TabKeyBehavior」プロパティについて設定してみます。プロパティウィンドウの「TabKeyBehavior」の箇所の右側にある下矢印をクリックして値を選択して下さい。

タブキーやEnterキーの動作を変更する(4)

テキストボックスにスクロールバーを設置する

テキストボックスにスクロールバーを設置します。テキストボックスでスクロールバーを設置するには「ScrollBars」プロパティを使います。

object.ScrollBars = fmScrollBars

コントロールに垂直スクロールバー、水平スクロールバーを表示するかどうかを設定します。 object には設定するオブジェクトを指定します。設定する値の fmScrollBars にはどのスクロールバーを表示するかを指定します。

設置可能な値は以下の通りです。

定数スクロールバー
fmScrollBarsNone0スクロールバーを表示しません
fmScrollBarsHorizontal1水平スクロールバーを表示します
fmScrollBarsVertical2垂直スクロールバーを表示します
fmScrollBarsBoth3水平スクロールバーと垂直スクロールバーの両方を表示します

デフォルトの値は「fmScrollBarsNone」となっておりスクロールバーを表示しません。

実際の使い方としては次のようになります。

sampleForm.nameText.ScrollBars = fmScrollBarsVertical

サンプルプログラム

では簡単なサンプルで試してみましょう。

Sub テスト()
    Load sampleForm
    sampleForm.nameText.MultiLine = True
    sampleForm.nameText.ScrollBars = fmScrollBarsVertical
    sampleForm.Show
End Sub

上記マクロを実行すると次のように表示されます。

テキストボックスにスクロールバーを設置する(1)

スクロールバーは必要無い時には表示されていませんが、次のように大量のテキストを入力した場合で1画面で収まらない場合など必要になった時にスクロールバーが表示されます。

テキストボックスにスクロールバーを設置する(2)

プロパティウィンドウで値を指定する

「ScrollBars」プロパティはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「ScrollBars」の箇所の右側にある下矢印をクリックして値を選択して下さい。

テキストボックスにスクロールバーを設置する(3)

テキストボックスの文字列を自動で折り返すかどうかを設定する

テキストボックスに表示される文字列を自動で折り返すかどうかの設定をします。テキストボックスで折り返しの設定をするには「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)

設定を行なわない場合は1行に入りきらない文字列を入力すると自動で折り返しが行われていましたが、「WordWrap」プロパティに「False」を設定すると自動で折り返しは行われません。(今回は分かりやすいように横スクロールバーを表示するように設定してあります)。

プロパティウィンドウで値を指定する

「WordWrap」プロパティはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「WordWrap」の箇所の右側にある下矢印をクリックして値を選択して下さい。

テキストボックスの文字列を自動で折り返すかどうかを設定する(2)

テキストボックスの文字色と背景色を設定する

テキストボックスの文字色と背景色を設定します。文字色の設定には「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 にはコントロールの背景スタイルを指定します。

指定できる値は次のどちらかです。

定数背景スタイル
fmBackStyleTransparent0背景を透明にします
fmBackStyleOpaque1背景を不透明にします

使い方としては次のようになります。

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

上記マクロを実行すると次のように表示されます。

テキストボックスの文字色と背景色を設定する(1)

このように文字の色と背景色を設定できます。

プロパティウィンドウで値を指定する

「ForeColor」プロパティと「BackColor」プロパティに関する設定はプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。では例として背景色の設定を行います。プロパティウィンドウの「BackColor」の箇所の右側にある下矢印をクリックします。

テキストボックスの文字色と背景色を設定する(2)

カラーパレットが表示されますので設定したい色を選択します。

-- --

フォーム上で文字を入力したり表示したりするために利用するテキストボックスの利用方法について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

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