VBA文字列の扱い方

かばくん

計算はできるようになりました!
次は、文字の扱い方について教えて下さい!

へびせんせい

VBAでは""(ダブルクォーテーション)で囲うと、その中は文字列として扱われます。
これはどのプログラミング言語でもおおよそ同じことです。
さらに、文字列の結合についても覚えてみましょう。

Point!
ほとんどのプログラミング言語では""で囲うと文字列として扱われる

文字列の基本 ""(ダブルクォーテーション)で囲う

そのまま文字列を扱う場合

MsgBox "こんにちは"

これで、こんにちは と表示されます。
" "がないと、プログラムは「こんにちは」という変数を探してしまい、そんな変数は定義されていないのでエラーとなります。

文字列型の変数に代入する場合

Dim msg As String
msg = "こんばんは"
MsgBox msg

文字列型の変数に代入するときも、同様に""で囲う必要があります。
そして、MsgBoxで表示するときは、msgという変数名を指定しているので、" "は不要です。
もし、MsgBox "msg"としてしまうと、msg とそのまま表示されてしまいます。

文字列の結合は&(アンパサンド)でつなげる

2つの文字列を結合するときに使うのが&記号です。
実は、計算のときに使った加算記号+でも同様のことが可能ですが、ちょっとだけ使い方が異なります。

文字列と文字列の結合

MsgBox "こん" & "にちは"
MsgBox "こん" + "にちは"

文字列と文字列の結合の場合は、&と+では同じように結合されて「こんにちは」と出力されます。

文字列と数値の結合

MsgBox 2020 & "年になりました"
MsgBox 2020 + "年になりました"

文字列と数値の場合は、結果が異なります。
&なら「2020年になりました」と正しく出力されますが、+だと、エラーとなってしまいます。

数値と数値の結合

MsgBox 20 & 20
MsgBox 20 + 20

数値と数値の場合も、やはり結果が異なります。
&では、文字列として結合されるため、「2020」となりますが、+だと、数値として扱われるので、当然ながら40と表示されます。

このように&と+で微妙に動作が異なります。
上記を踏まえると、文字列として結合したいときは、「&で結合する」と覚えておけば間違いありません。

文字列の結合は&記号で行う!

文字列についての練習問題

へびせんせい

文字列型の変数msg1とmsg2を2つ定義し、さらに長整数型の変数nowyearを定義しなさい。
そして、「今年の西暦は、2020年です。」と、MsgBoxで変数を使って表示せよ。

解答はコチラ

Excelを開いて、コードを確認してください

Download