では、実務でよくある「セルの値を読み取って文字列を結合」「ログ用の文字列を作ってシートやファイルに書き込む」例を、VBA初心者でも理解しやすいように具体例でまとめます。
1️⃣ セルの値を結合して別セルに書き込む例
Sub Example_ConcatCells()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' A列に名前、B列に年齢、C列に住所があると仮定
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Dim i As Long
For i = 2 To lastRow
' A列 + B列 + C列 を結合して D列に書き込む
ws.Cells(i, "D").Value = _
ws.Cells(i, "A").Value & "さん、" & _
ws.Cells(i, "B").Value & "歳、" & _
ws.Cells(i, "C").Value & "にお住まいです"
Next i
End Sub
VB✅ 解説:
&で文字列とセルの値を結合。- 空白や「さん」「歳」を文字列として挿入。
Forループで複数行を処理。
2️⃣ ログ用文字列を作ってシートに書き込む例
Sub Example_CreateLog()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Log")
' ログの書き込み先の次の空行を取得
Dim nextRow As Long
nextRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1
' ログ用情報
Dim userName As String: userName = "Halu"
Dim action As String: action = "データ更新"
Dim logTime As String: logTime = Format(Now, "yyyy/mm/dd HH:MM:SS")
' ログ文字列を結合
Dim logStr As String
logStr = logTime & " - " & userName & " が " & action & " を行いました。"
' シートに書き込み
ws.Cells(nextRow, "A").Value = logStr
End Sub
VB✅ 解説:
Nowで現在日時を取得。Formatで文字列化。- ログ文字列を結合して、次の空行に書き込む。
- これをボタンに割り当てると、操作履歴を自動記録できる。
3️⃣ 複数セルの値をまとめて CSV 形式の文字列にする例
Sub Example_CreateCSVLine()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' 1行目のデータを CSV 形式に変換
Dim csvLine As String
csvLine = ws.Cells(1, "A").Value & "," & _
ws.Cells(1, "B").Value & "," & _
ws.Cells(1, "C").Value
' 結果を D1 に書き込む
ws.Cells(1, "D").Value = csvLine
End Sub
VB✅ 解説:
- 配列や
Joinを使えば大量セルでも簡単に結合できる。
4️⃣ 配列とループを使った実践例(複数行まとめてログ)
Sub Example_LogMultipleRows()
Dim wsData As Worksheet, wsLog As Worksheet
Set wsData = ThisWorkbook.Sheets("Sheet1")
Set wsLog = ThisWorkbook.Sheets("Log")
Dim lastRow As Long
lastRow = wsData.Cells(wsData.Rows.Count, "A").End(xlUp).Row
Dim i As Long
For i = 2 To lastRow
Dim logStr As String
logStr = Format(Now, "yyyy/mm/dd HH:MM:SS") & " - " & _
wsData.Cells(i, "A").Value & " (" & wsData.Cells(i, "B").Value & ") " & _
"が " & wsData.Cells(i, "C").Value & " を操作しました"
' 次の空行に書き込み
wsLog.Cells(wsLog.Cells(wsLog.Rows.Count, "A").End(xlUp).Row + 1, "A").Value = logStr
Next i
End Sub
VB✅ 解説:
- データシートの各行の情報をログ文字列に変換して、ログシートに追記。
- 実務では「誰が何をしたか」を記録する簡単なログ管理に便利。
💡 ポイントまとめ
&で文字列とセルの値を結合する。Formatで日付・時刻を文字列に変換して可読性アップ。- ループを使うと複数行の処理も自動化可能。
- ログやCSVなど、実務向けの文字列生成にすぐ応用できる。

