達人養成塾の小川です。
受講者の方からの質問で、
次のようなコードをいただきました。
Sub Sample() Dim buf1 As String, buf2 As String buf1 = InputBox("数値1を入力してください。") '100を入力 buf2 = InputBox("数値2を入力してください。") '200を入力 MsgBox buf1 + buf2 End Sub
3行目と4行目でそれぞれ100、200と入力した場合、
5行目で何が表示されるでしょうか?
300って表示されるような気がしますが、
この場合は、「100200」というように
二つの数字がつながって表示されます。
通常、+の記号は足し算の記号で、
文字列を結合する場合は、&を使うのが一般的ですが、
文字列同士の場合は+でも結合されます。
ここでは、2行目でbuf1, buf2の2つの変数が
Stringを使って文字列型に指定しているので、
文字列がつながって表示されるのです。
このようにVBAでは数値なのか文字列なのかによって、
同じ記号が別の意味になることがありますので、
知らずに使うと意図しない結果になりますので、注意が必要です。
以下のような検証のプログラムを実行してみて、
理解を深めてください。
プログラムの中に出てくるCInt関数は
文字列を整数に変える関数です。
これもよく使うので覚えておくと便利ですね。
Sub hoge() Dim s1 As String Dim s2 As String s1 = 1 s2 = 2 Debug.Print s1 + s2 Debug.Print CInt(s1) + s2 Debug.Print s1 + CInt(s2) End Sub Sub Sample() Dim buf1 As String, buf2 As String buf1 = InputBox("数値1を入力してください。") '100を入力 buf2 = InputBox("数値2を入力してください。") '200を入力 MsgBox buf1 + buf2 MsgBox CInt(buf1) + buf2 MsgBox buf1 + CInt(buf2) End Sub