『Excel VBA 表計算とプログラミング学習サイト』では、アフィリエイトプログラムを利用して商品を紹介しています。

【VBA】Join関数で配列要素を結合します

【VBA】Join関数

今回は VBA の配列要素を全て結合する Join関数 について説明します。特に難しいことは何もないですけど、配列の操作をひと通り覚えておくとプログラミングの幅が広がります。Join関数を使うときは

Join(結合元データ, [デリミタ])

と書きます。結合元データには 1 次元配列要素を指定するんですけど、配列なら何でもいいというわけはなく、中身は文字列限定です。数字とか真偽値とか変なものを入れるとエラーになるので気をつけましょう。要するに Join は文字列同士をくっつける関数だと覚えておけば間違いありません。デリミタ(区切り文字)は結合する文字の間に入る記号です。「。」でも「、」でも「接着剤」でも、好きな文字を指定してください。省略すると文字の間に半角スペースが入ります。それでは、サンプルコードを見てみましょう。

'[VBA] Joinで配列要素を結合するプロシージャ

Sub Join_Words()

  Dim myword(3) As String
  Dim mysentence As String

  myword(0) = "VBA"
  myword(1) = "ハイマスター"
  myword(2) = "こばとちゃん"
  myword(3) = "参上!"

  'Joinで配列要素を結合
  mysentence = Join(myword)

  Debug.Print mysentence

End Sub

Join_Words() を実行するとイミディエイトウィンドウに「VBA ハイマスター こばとちゃん 参上!」と表示されます。デリミタを省略しているので、文字の間に半角スペースが空いちゃってますね。隙間をなくしたい場合はデリミタに空白文字列を意味する “” を指定します。

mysentence = Join(myword,"")

と書き直して実行すると「VBAハイマスターこばとちゃん参上!」と表示されます。
 

コメント

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

    【VBA】Join関数で要素を改行で結合します

    Google Bard に VBA の配列要素を改行で結合するコードを書いてもらいました:

    Sub Sample()
    Dim myName(4) As String
    myName(0) = "田中"
    myName(1) = "鈴木"
    myName(2) = "佐藤"
    myName(3) = "山田"
    myName(4) = "黒沢"
    
    Dim msg As String
    msg = Join(myName, vbCrLf)
    
    MsgBox msg
    End Sub

    このコードは、配列myNameの要素を改行で結合し、メッセージボックスに表示します。Join関数は配列の要素を指定された区切り文字で結合する関数です。第1引数には配列、第2引数には区切り文字を指定します。このコードでは、第2引数にvbCrLfを指定することで、改行を区切り文字として使用しています。vbCrLfは、改行コードを表す定数です。Windowsでは、改行コードはCRとLFの2つの文字で構成されています。CRはカーソルを行頭に戻す文字で、LFはカーソルを次の行に移動する文字です。vbCrLfは、この2つの文字を組み合わせたものです。

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

    【VBA】Joinを使った笑えるコード?

    ChatGPT に「VBA の Join 関数を使った、ユーモアあふれるコードを書いてください」と頼んでみると、以下のような回答でした。
     
    [ChatGPT] こちらは、ユーモアあふれるVBAのコード例です。Join関数を使用して、ある配列の要素を結合し、面白いメッセージを作成します。

    Sub HumorousJoin()
        Dim items() As Variant
        items = Array("プログラマー", "デザイナー", "コーヒー好き", "ネコ飼い")
        
        Dim joinedItems As String
        joinedItems = Join(items, ", ")
        
        Dim message As String
        message = "あなたは" & joinedItems & "です。"
        
        MsgBox message & vbCrLf & "この組み合わせは最強ですよ!", vbInformation, "ユーモアあふれるメッセージ"
    End Sub

    このコードでは、itemsという配列に複数の要素を定義しています。それぞれの要素は、例えば「プログラマー」や「デザイナー」などの役割や趣味を表しています。Join関数を使用して、配列の要素を「, 」で結合し、joinedItemsという文字列変数に代入します。次に、message変数に「あなたは」とjoinedItemsを結合したメッセージを代入します。最後に、MsgBox関数を使用してメッセージボックスを表示します。このメッセージボックスには、「あなたは」と結合された要素が表示されます。さらに、「この組み合わせは最強ですよ!」というユーモアを加えました。このコードを実行すると、例えば「あなたはプログラマー, デザイナー, コーヒー好き, ネコ飼いです。」というメッセージが表示されます。もちろん、items配列に自分自身の役割や趣味を追加して、より面白いメッセージを作成することもできます!