Excel VBA | 文字列の結合

Excel VBA VBA
スポンサーリンク

では、実務でよくある「セルの値を読み取って文字列を結合」「ログ用の文字列を作ってシートやファイルに書き込む」例を、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

✅ 解説:

  • データシートの各行の情報をログ文字列に変換して、ログシートに追記。
  • 実務では「誰が何をしたか」を記録する簡単なログ管理に便利。

💡 ポイントまとめ

  1. & で文字列とセルの値を結合する。
  2. Format で日付・時刻を文字列に変換して可読性アップ。
  3. ループを使うと複数行の処理も自動化可能。
  4. ログやCSVなど、実務向けの文字列生成にすぐ応用できる。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました