フォームから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行になる。
- 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で 入力データを結合して表示・保存・マスタ突き合わせ ができるフォームを簡単に作成できます。
