Excel VBA 逆引き集 | フォームからJOIN

Excel VBA
スポンサーリンク

フォームからJOIN(複数データの結合)の基本

Excel VBAで「フォームから入力した複数のデータを結合して表示したい」「別シートのマスタと入力データを突き合わせたい」といった場面では JOIN処理 を組み込むと便利です。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。


基本の考え方

  • JOINとは?
    VBAでは文字列配列を結合する関数 Join があり、複数の値をまとめて一つの文字列にできます。
    また「JOIN」という言葉はデータベース的に「複数の表を結合する」意味でも使われます。Excel VBAでは「シートのデータを突き合わせて結合」する処理を自作します。
  • 用途:
    • フォーム入力値をまとめて1つの文字列にする
    • マスタデータと入力値を結合して結果を表示
    • 複数のリストをJOINしてCSV出力

テンプレ1:フォーム入力を文字列結合(Join関数)

UserFormに TextBox1(姓)TextBox2(名)CommandButton1(結合ボタン) を配置。

Private Sub CommandButton1_Click()
    Dim arr As Variant
    arr = Array(TextBox1.Value, TextBox2.Value)
    
    ' Joinで結合(スペース区切り)
    Dim fullName As String
    fullName = Join(arr, " ")
    
    MsgBox "氏名: " & fullName
End Sub
VB
  • ポイント:
    • Array で複数値を配列に。
    • Join で区切り文字を指定して結合。

テンプレ2:フォーム入力をCSV形式でJOIN

UserFormに TextBox1(氏名)TextBox2(年齢)TextBox3(住所) を配置。

Private Sub CommandButton1_Click()
    Dim arr As Variant
    arr = Array(TextBox1.Value, TextBox2.Value, TextBox3.Value)
    
    ' カンマ区切りで結合
    Dim csvLine As String
    csvLine = Join(arr, ",")
    
    MsgBox "CSV形式: " & csvLine
End Sub
VB
  • ポイント:
    • CSV出力の基本は Join
    • 区切り文字を「,」にすればそのままCSV行になる。

テンプレ3:フォーム入力とマスタをJOIN(突き合わせ)

シート「Master」に以下の表があると仮定:

ID商品名
101ノートPC
102マウス
103キーボード

UserFormに TextBox1(ID入力欄)CommandButton1(検索ボタン) を配置。

Private Sub CommandButton1_Click()
    Dim ws As Worksheet: Set ws = Worksheets("Master")
    Dim lastRow As Long: lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    Dim i As Long, result As String
    result = ""
    
    For i = 2 To lastRow
        If ws.Cells(i, 1).Value = TextBox1.Value Then
            result = "ID: " & ws.Cells(i, 1).Value & " → 商品名: " & ws.Cells(i, 2).Value
            Exit For
        End If
    Next i
    
    If result = "" Then
        MsgBox "該当する商品はありません"
    Else
        MsgBox "検索結果: " & result
    End If
End Sub
VB
  • ポイント:
    • 入力IDとマスタを突き合わせてJOIN。
    • データベース的な「結合」をExcel VBAで再現。

テンプレ4:複数フォーム入力をJOINしてシートに保存

Private Sub CommandButton1_Click()
    Dim ws As Worksheet: Set ws = Worksheets("Data")
    Dim lastRow As Long: lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    Dim arr As Variant
    arr = Array(TextBox1.Value, TextBox2.Value, TextBox3.Value)
    
    ' JOINで結合した文字列を保存
    ws.Cells(lastRow + 1, 1).Value = Join(arr, " | ")
    
    MsgBox "データを保存しました!"
End Sub
VB
  • ポイント:
    • 区切り文字を「|」にして見やすく保存。
    • JOINでまとめて1セルに格納。

例題で練習

'例1:姓と名をJOINして氏名を表示
'例2:氏名・年齢・住所をCSV形式でJOIN
'例3:入力IDとマスタをJOINして商品名を表示
'例4:複数入力をJOINしてシートに保存
VB

初心者向けポイント

  • Join関数は「配列を文字列にする」便利関数 → 区切り文字を自由に指定できる。
  • CSVやログ出力に最適Join(arr, ",") で簡単にCSV行が作れる。
  • マスタ突き合わせは「JOIN的処理」 → 入力値とシートデータを結合して結果を返す。
  • 保存時にJOINすると1セルにまとめられる → データ整理に便利。

👉 この「フォームからJOINテンプレ」を覚えておけば、Excel VBAで 入力データを結合して表示・保存・マスタ突き合わせ ができるフォームを簡単に作成できます。

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