【VBA】ユーザーフォームで複数行入力できるテキストボックスを作成する方法

目次

はじめに

VBAのユーザーフォームで、住所や備考欄のように、ユーザーに複数行にわたる自由な文章を入力してもらいたい場合があります。デフォルトのテキストボックスは一行しか入力できませんが、いくつかのプロパティを設定するだけで、簡単に複数行入力に対応させることが可能です。

この記事では、テキストボックスで改行を有効にし、複数行のテキスト入力や表示を可能にするための主要なプロパティと、その設定方法を分かりやすく解説します。


複数行テキストボックスの設定サンプルコード

複数行入力に関連する設定は、主にフォームが表示される直前の UserForm_Initialize イベント内で行います。

この例では、MemoForm というフォームに配置された Remarks_TextBox を、複数行入力が可能な備考欄として設定します。

ユーザーフォームのコード

' フォームが初期化されるときに実行されるイベント
Private Sub UserForm_Initialize()

    With Me.Remarks_TextBox
    
        ' .MultiLine プロパティ: 複数行の入力を有効にする
        .MultiLine = True
        
        ' .WordWrap プロパティ: 右端での自動折り返しを有効にする
        .WordWrap = True
        
        ' .EnterKeyBehavior プロパティ: Enterキーでの改行を有効にする
        .EnterKeyBehavior = True
        
        ' .ScrollBars プロパティ: 必要に応じてスクロールバーを表示する
        .ScrollBars = fmScrollBarsVertical
        
        ' 初期値を設定(vbCrLfで改行を挿入)
        .Text = "【特記事項】" & vbCrLf & "1. "
        
    End With

End Sub

実行前の準備

  1. MemoForm という名前のユーザーフォームを作成します。
  2. フォーム上に「テキストボックス」を配置し、複数行が収まるように縦に広げておきます。
  3. テキストボックスの (Name) プロパティを Remarks_TextBox に変更します。
  4. フォームのコードモジュールに上記のコードを貼り付け、フォームを表示すると、設定が適用された複数行テキストボックスが表示されます。

コード(プロパティ)の解説

.MultiLine = True

これが複数行入力の最も基本となるプロパティです。True に設定することで、テキストボックスが複数行のテキストを扱えるようになります。これを設定しないと、他のプロパティも機能しません。

.WordWrap = True

テキストがテキストボックスの右端に達したときに、自動的に次の行に折り返すかどうかを設定します。True であれば、長い文章も枠内に収まるように自動で改行されます。通常は True に設定すると便利です。

.EnterKeyBehavior = True

ユーザーがテキストボックス内で Enter キーを押したときの動作を制御します。

  • True: テキストボックス内で改行が挿入されます。複数行入力欄としては、こちらが自然です。
  • False: Enter キーを押すと、フォームの次のタブオーダーのコントロールにフォーカスが移動します。

.ScrollBars

テキストがテキストボックスの表示領域に収まらない場合に、スクロールバーを表示するかどうかを設定します。

  • fmScrollBarsNone: スクロールバーなし(デフォルト)。
  • fmScrollBarsHorizontal: 水平スクロールバー。
  • fmScrollBarsVertical: 垂直スクロールバー。
  • fmScrollBarsBoth: 両方。

MultiLine = True の場合は、fmScrollBarsVertical を設定しておくと、長い文章が入力されても対応できるため親切です。

vbCrLf

VBAコード内で文字列を改行したい場合は、改行コードを表す定数 vbCrLf を使います。"1行目" & vbCrLf & "2行目" のように文字列を連結することで、テキストボックスの初期値として複数行のテキストを設定できます。


まとめ

今回は、ユーザーフォームのテキストボックスを複数行入力に対応させるための設定について解説しました。

  • .MultiLine = True を設定するのが大前提。
  • .WordWrap = True で自動折り返しを有効にする。
  • .EnterKeyBehavior = TrueEnter キーによる改行を可能にする。
  • .ScrollBars で、必要に応じてスクロールバーを追加する。

これらのプロパティを組み合わせることで、ユーザーが自由な形式で文章を入力できる、使いやすい備考欄やコメント欄をフォーム上に作成することができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次