実務的な応用練習問題
では「複数のセルに入力されたデータをまとめて改行付きでレポートにする」実務寄りの応用練習問題です。
問題1:注文リストをレポートにまとめる
セル A2~A4 に「商品名」、B2~B4 に「数量」が入力されています。
これを1つのセル(D2)に次のように改行付きでまとめて表示してください。
商品名: コーヒー豆 数量: 2
商品名: 紅茶 数量: 1
商品名: クッキー 数量: 5
回答例
Sub Q1_OrderReport()
Dim i As Long
Dim report As String
For i = 2 To 4
report = report & "商品名: " & Range("A" & i).Value & _
" 数量: " & Range("B" & i).Value & vbLf
Next i
Range("D2").Value = report
End Sub
VB解説
Forループで行を順番に処理。- 文字列を
reportにどんどん追加していく。 - セルに表示するので vbLf を使用。
問題2:社員名簿をメッセージボックスで表示
セル A2~A5 に「名前」、B2~B5 に「部署」が入力されています。
これをメッセージボックスに次のように表示してください。
名前: 佐藤 部署: 営業
名前: 鈴木 部署: 開発
名前: 田中 部署: 総務
名前: 高橋 部署: 経理
回答例
Sub Q2_EmployeeList()
Dim i As Long
Dim msg As String
For i = 2 To 5
msg = msg & "名前: " & Range("A" & i).Value & _
" 部署: " & Range("B" & i).Value & vbNewLine
Next i
MsgBox msg, vbInformation, "社員名簿"
End Sub
VB解説
- MsgBoxなので vbNewLine を使用。
- ループで複数行をまとめて1つの文字列に。
vbInformationで情報アイコン付きに。
問題3:売上レポートを整形して出力
セル A2~A4 に「商品名」、B2~B4 に「売上金額」が入力されています。
これをセル E2 に次のようにまとめて表示してください。
売上レポート
----------------
商品: コーヒー豆 金額: 1200円
商品: 紅茶 金額: 800円
商品: クッキー 金額: 1500円
回答例
Sub Q3_SalesReport()
Dim i As Long
Dim report As String
report = "売上レポート" & vbLf & "----------------" & vbLf
For i = 2 To 4
report = report & "商品: " & Range("A" & i).Value & _
" 金額: " & Range("B" & i).Value & "円" & vbLf
Next i
Range("E2").Value = report
End Sub
VB解説
- 見出しや区切り線も文字列に含めると「レポート感」が出る。
- セルに出力するので vbLf を使用。
- 実務で「報告書のひな型」を作るときに応用できる。
まとめ
- セルにまとめる → vbLf
- MsgBoxにまとめる → vbNewLine
- ループで複数行を処理 → 文字列を連結して1つにまとめる

