Excel VBA入門 その35:InputBoxで改行する方法

エクセルVBA VBA



InputBoxで改行する方法について、 メッセージ部分、タイトル部分、入力欄に分けて徹底解説します。



InputBoxで改行する方法

InputBoxには、メッセージ部分、タイトル部分、入力欄があります。

どこで改行するかによって方法が異なりますので、今回は各パート別に解説します。

その前に、VBAのInputBoxには2種類あることをご存じですか?

「InputBox関数」と、「ApplicationオブジェクトのInputBoxメソッド」です。

ざっくり言うと、

  • InputBox関数 ⇒ 文字列を入力する
  • InputBoxメソッド ⇒ 指定した種類のデータを入力する

といったものになります。

細かい設定ができるのは、InputBoxメソッドになります。

参考:Excel VBA入門 その34:VBAで入力ボックスを表示する方法(InputBox)

InputBox関数とInputBoxメソッドのどちらを使えばいいの?

さて、InputBox関数と ApplicationオブジェクトのInputBoxメソッド のどちらを使えば良いのかというと、あえて正解を決めるならば、 ApplicationオブジェクトのInputBoxメソッド を使った方がベストです。

というのも、「大は小を兼ねる」というように、InputBoxメソッドを使えばInputBox関数でやりたいことをできますが、InputBox関数を使ってもInputBoxメソッドでやりたいことを達成できないからです。

したがって、特に理由が無ければ ApplicationオブジェクトのInputBoxメソッド を使うことをオススメします。

以下の説明では、 ApplicationオブジェクトのInputBoxメソッド で説明します。

InputBoxのメッセージ部分で改行する方法

メッセージ部分すなわち引数「prompt」に該当する部分での改行方法となります。

改行には、改行したい箇所にvbCrlfを入れます。

使い方は、“文章” & vbCrlf & “文章” のように、「&」を使って記述します。

具体的には、以下のように記述します。

Sub 改行()
Dim hensu As Variant
hensu = Application.InputBox(Prompt:=”一行目” & vbCrLf & “二行目” & vbCrLf & “三行目”)
End Sub

InputBoxのタイトル部分で改行する

InputBoxのタイトル部分で改行することは、残念ながらできません。

ためしに、実験してみます。以下のコードのようにvbCrlfを使って改行してみます。

Sub 改行()
Dim hensu As Variant
hensu = Application.InputBox(Prompt:=”一行目” & vbCrLf & “二行目” & vbCrLf & “三行目”, _
Title:=”一行目” & vbCrLf & “二行目”)
End Sub

このように、タイトル部分にvbCrlfを使っても、改行することなく1行で表示されてしまいます。

InputBoxの入力欄で改行する

それでは、InputBoxの入力欄で改行してみましょう。

以下のコードのように、入力欄の規定値に3行設定し、入力してものをセル「A1」に表示してみます。

Sub 改行()
    Dim hensu As Variant
    hensu = Application.InputBox(Prompt:="一行目" & vbCrLf & "二行目" & vbCrLf & "三行目", _
                                Title:="一行目" & vbCrLf & "二行目", _
                                Default:="一行目" & vbCrLf & "二行目" & vbCrLf & "三行目")
    Cells(1, 1) = hensu
End Sub

一見、入力欄には一行目しか表示されていませんが、そのまま「OK」をクリックすると、セル「A1」に改行された3行が表示されます。

入力欄の改行ができた!・・・と思いきや、じつは入力欄に文字を入力して「Enterキー」や「Alt + Enter」を押して改行しようとしても改行できません。

InputBoxでは、あらかじめ設定した規定値のままだと改行されて表示されますが、入力欄に入力した文字は改行できないのです。

したがって、InputBoxのような入力欄に入れた文字を改行したい場合には、ユーザーフォームを使うことになります。。ので、ユーザーフォームのサンプルコードを次に紹介します。

InputBoxの入力欄で改行する【ユーザーフォーム版】

ユーザーフォームで以下手順の設定をします。

  1. テキストボックス(TextBox1)を作成する。
  2. コマンドボタン(CommandButton1)を作成する。
  3. TextBox1で、Enterキーで改行できるように、EnterKeyBehaviorを「True」に設定する。
  4. TextBox1 で、複数行入力できるように、MultiLineを「True」に設定する。
  5. TextBox1とCommandButton1に対して、以下のコードを記述する。
Private Sub CommandButton1_Click()
    Unload Me
End Sub

Private Sub TextBox1_Change()
  Cells(1, 1).Value = TextBox1.Value
End Sub

これで、テキストボックスに入力した文字列は、セルA1に表示されるようになりました。

実行すると、以下のようになります。

このように、テキストボックスに入力した文字列はEnterキーで改行でき、セルA1に表示されます。

ちなみに、CommandButton1をクリックするとユーザーフォームが閉じます。

【まとめ】 InputBoxで改行する方法

InputBoxで改行するには、

  • メッセージ部分 ⇒ vbCrlf を使う。
  • タイトル部分 ⇒ 改行できない。
  • 入力欄 ⇒ ユーザーフォームで作成し、 EnterKeyBehaviorを「True」 、 MultiLineを「True」 に設定する。

というようになります。

ぜひ役立ててくださいね。

コメント

  1. […] Excel VBA入門 その35:InputBoxで改行する方法 […]

  2. […] Excel VBA入門 その35:InputBoxで改行する方法 […]

  3. […] Excel VBA入門 その35:InputBoxで改行する方法 […]

  4. […] Excel VBA入門 その35:InputBoxで改行する方法 […]

タイトルとURLをコピーしました