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の入力欄で改行する【ユーザーフォーム版】
ユーザーフォームで以下手順の設定をします。
- テキストボックス(TextBox1)を作成する。
- コマンドボタン(CommandButton1)を作成する。
- TextBox1で、Enterキーで改行できるように、EnterKeyBehaviorを「True」に設定する。
- TextBox1 で、複数行入力できるように、MultiLineを「True」に設定する。
- 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」 に設定する。
というようになります。
ぜひ役立ててくださいね。
コメント
[…] Excel VBA入門 その35:InputBoxで改行する方法 […]
[…] Excel VBA入門 その35:InputBoxで改行する方法 […]
[…] Excel VBA入門 その35:InputBoxで改行する方法 […]
[…] Excel VBA入門 その35:InputBoxで改行する方法 […]