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

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

【VBA】データの結合

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

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

Sub Join_String()

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

  '文字列を変数に入れておきます
  myword1 = "こばとちゃんは"
  myword2 = "世界一かわいい工学生命体です♪"

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

  Debug.Print xx

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

End Sub

 
 Join_String() を実行すると、

こばとちゃんは世界一かわいい工学生命体です♪

という文章が表示されます。んん!? 誰ですか!?
「うわ! またこのパターンだよ! どんだけ自分が好きなの!?」
とか言ってる人は? こばとは本当のことを書いているだけだです。

 あ、そうそう。文章の下に 8 が表示されたと思うけど、これは VarType 関数 で取得したデータ型です。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 と表示されるので、数値同士を “&” で結合させても、やっぱり文字列型になってしまうということです。なんだか不思議ですね。余談ですけど、”アンパサンド” て聞くと、「アンパン」と「サンドイッチ」を連想しませんか? え? こばとだけ? そうですかね。

コメント

タイトルとURLをコピーしました