当サイトではアフィリエイトプログラムを利用して商品を紹介しています。

【VBA】アンパサンド(&)によるデータの結合

VBA文字列を結合 するときは アンパサンド (&) を使います。こんなことは VBA の入門段階で教わる話なので、何を今さらと思われるかもしれませんが、実は “&” 演算子は文字列と数値、数値と数値を結合することもできるのです。「整数型の数値同士を “&” でくっつけたら、どんな型のデータになるのかな?」という、知っていても大して役に立たないことを単なる好奇心で調べてみました。

【VBA】データの結合

 まずは基本中の基本から。2つの文字列を結合させてみましょう。

'[VBA] アンパサンド演算子(&)による文字列同士の結合

Sub Join_String()

  Dim myword1 As String
  Dim myword2 As String
  Dim xx As Variant

  '文字列を変数に入れておきます
  myword1 = "VBAは"
  myword2 = "事務系でまだまだ活躍できる言語です"

  '文字列を結合させます
  xx = myword1 & myword2

  Debug.Print xx

  'データ型を調べておきます
  Debug.Print VarType(xx)

End Sub

'Join_String()の実行結果:
'VBAは事務系でまだまだ活躍できる言語です

あ、そうそう。文章の下に「8」が表示されたと思うけど、これは VarType関数 で取得したデータ型です。VBAでは型検査で「8」が表示されたら、引数のデータは文字列型(String型)だということです。
 
次は文字列型データと整数型データを結合させてみましょう。

'[VBA] アンパサンド演算子(&)による文字列と数値の結合

Sub Join_String_Number()

  Dim mystr As String
  Dim mynum As Integer
  Dim xx As Variant

  mystr = "こばと"
  mynum = 1034

  xx = mystr & mynum

  Debug.Print xx

  'データ型を調べておきます
  Debug.Print VarType(xx)

End Sub

'Join_String_Number()の実行結果:
'1034

え? 「1034」は何の数字かって? … こばとの年齢。さらに下に「8」という数字も表示されるので、文字列と数値を “&” で結合させたら、それは文字列型になるということです。
 
はい。それでは最後に整数型の「10」と「34」を結合させてみましょう。

'[VBA] アンパサンド演算子(&)による数値と数値の結合

Sub Join_Numbers()

  Dim i As Integer
  Dim j As Integer
  Dim xx As Variant

  i = 10
  j = 34

  xx = i & j

  Debug.Print xx
  Debug.Print VarType(xx)

End Sub

'Join_Numbers()の実行結果:
'1034

データ型は「8」と表示されるので、数値同士を “&” で結合させても、やっぱり文字列型になってしまうということです。なんだか不思議ですね。余談ですけど、”アンパサンド” て聞くと、「アンパン」と「サンドイッチ」を連想しませんか? え? こばとだけ? そうですかね。
 
≫【VBA】Debug.Printの使い方

コメント

  1. あとりえこばと より:

    【AI解説】VBAにおける&の役割

    [ChatGPT] VBAにおける「&」演算子は、文字列の結合(連結)を行うために使用される特別な演算子です。この演算子を使うことで、異なる文字列を結合して新しい文字列を作成することができます。「&」演算子の使用法は以下のようになります:

    result = string1 & string2

    ここで、string1とstring2は結合したい文字列です。この演算子を使用することで、string1とstring2が連結された新しい文字列がresultに代入されます。例えば、次のコードを考えてみましょう:

    Dim greeting As String
    
    Sub JoinTest()
      Dim name As String
      Dim message As String
      greeting = "Hello"
      name = "John"
      message = greeting & ", " & name & "!"
    End Sub

    上記のコードでは、”Hello”という文字列をgreeting変数に、”John”という文字列をname変数に代入しています。そして、「&」演算子を使ってgreeting、”, “、nameを連結し、最終的なメッセージをmessage変数に格納しています。結果として、message変数には”Hello, John!”という文字列が代入されます。「&」演算子は、文字列以外のデータ型を文字列に変換してから結合することもできます。VBAは、演算子が文字列ではないデータ型を受け取った場合、自動的にそのデータ型を文字列に変換してから結合します。例えば、次のコードを考えてみましょう:

    Dim age As Integer
    
    Sub CombineTest()
      Dim message As String
      age = 25
      message = "I am " & age & " years old."
    End Sub

    上記のコードでは、age変数に整数値の25を代入しています。そして、「&」演算子を使って文字列と整数値を連結し、message変数に格納しています。age変数は整数型ですが、VBAは自動的にその値を文字列に変換してから連結します。結果として、message変数には”I am 25 years old.”という文字列が代入されます。このように、「&」演算子は文字列の結合を行うための便利な演算子です。異なる文字列や他のデータ型を結合して新しい文字列を作成する際に使用することができます。