officeproロゴ

文字列の結合

広告

2つの文字列を1つの文字列として結合する方法について確認していきます。

文字列と文字列を結合するにはアンパサンド(&)を使う方法とプラス(+)を使う方法の2つがあります。

Dim a As String
Dim b As String
Dim c As String
Dim d As String

a = "こんにちは"
b = "お元気ですか"

c = a & b
d = a + b

上記では変数「c」と変数「d」のどちらにも「こんにちはお元気ですか」と変数「a」と変数「b」の文字列が結合された文字列が格納されます。

また文字列と文字列の結合だけではなく、文字列と数値を結合して新しい文字列とすることもできますし、数値と数値を結合して文字列とすることもできます。

「&」と「+」のどちらを使ってもいいのですが、「+」の方は数値と数値で使うと加算が実行されてしまい、単に結合とはなりませんので注意が必要です。次のサンプルを見て確認して下さい。

サンプルプログラム

まずは「&」を使って色々な文字を結合してみます。

test5.bas

Sub テスト()
    Dim str1 As String
    Dim str2 As String
    Dim num1 As Integer
    Dim num2 As Integer
    
    str1 = "こんにちは"
    str2 = "お元気ですか"
    num1 = 10
    num2 = 34

    Range("A1").Value = str1 & str2
    Range("A2").Value = str1 & num1
    Range("A3").Value = num2 & str1
    Range("A4").Value = num1 & num2

End Sub

上記のマクロを実行すると次のようになります。

文字列の結合

このように、文字列と文字列、文字列と数値、数値と文字列、数値と数値、のどのパターンでも「&」の両端の値が単にくっついて新しい文字列となっています。

では次に「+」を使って試してみます。

test6.bas

Sub テスト()
    Dim str1 As String
    Dim str2 As String
    Dim num1 As Integer
    Dim num2 As Integer
    
    str1 = "こんにちは"
    str2 = "お元気ですか"
    num1 = 10
    num2 = 34

    Range("A1").Value = str1 + str2
    Range("A2").Value = str1 + num1
    Range("A3").Value = num2 + str1
    Range("A4").Value = num1 + num2

End Sub

今度の場合、まずコンパイルの段階でエラーが出ます。

文字列の結合

エラーが発生しているのは「文字列」+「数値」の行です。「+」を使う場合にはこの組み合わせは実行できません。同じ理由で「数値」+「文字列」の行も実行できません。そこでこの2つの行は削除して再度実行してみます。

文字列の結合

文字列と文字列、そして数値と数値はエラーがなく実行が出来ますが、「数値」と「数値」を「+」で結んだ場合、「&」のように単に上下に結合した文字列が出来るのではなく、左辺と右辺が加算の計算が行われ、加算の結果が表示されることになります。

このように文字列の結合の場合には、出来る限りアンパサンド(&)を使って結合しておいた方がケアレスミスも少なくなりますので出来る限り「&」を使うようにしましょう。

( Written by Tatsuo Ikura+ )