Excel VBAを使用して、特定のページにデータを印刷したい場合、特にページごとにデータを交互に配置したい場合は、For文を活用することで柔軟に対応できます。この記事では、印刷するデータを交互に配置するためのVBAコードの書き方について説明します。
1. 基本的な考え方
まず、質問で求められている「1枚目の上が1人目、下が3人目、2枚目の上が2人目、下が4人目」というような交互にデータを配置する方法の概要を説明します。VBAのFor文を使用して、各データを交互に処理し、ページごとのレイアウトを調整します。
2. VBAコード例
以下のコード例では、For文を使って、データを交互にページに配置する方法を示します。印刷するデータは別シートに格納されており、A列から始まる各行のデータを印刷します。
Sub PrintData()
Dim i As Integer
Dim lastRow As Long
Dim dataSheet As Worksheet
Dim printSheet As Worksheet
Set dataSheet = ThisWorkbook.Sheets("Data")
Set printSheet = ThisWorkbook.Sheets("Print")
lastRow = dataSheet.Cells(dataSheet.Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow Step 2
' 1枚目の上が1人目、下が3人目
printSheet.Cells(1, 1).Value = dataSheet.Cells(i, 1).Value ' 1人目
printSheet.Cells(2, 1).Value = dataSheet.Cells(i + 1, 1).Value ' 3人目
' 印刷処理(仮)
printSheet.PrintOut
Next i
End Sub
このコードでは、データシートの2行目から始めて、Step 2で2行ずつ飛ばしながらデータを配置します。1人目はそのまま1ページ目に、3人目はその下に配置されます。
3. 奇数人数に対応した印刷処理
人数が奇数の場合、最後のページは1人だけが表示される可能性があります。これに対応するためには、条件分岐を使用して、奇数の場合でも適切にデータを配置することが重要です。
For i = 2 To lastRow Step 2
printSheet.Cells(1, 1).Value = dataSheet.Cells(i, 1).Value ' 1人目
If i + 1 <= lastRow Then
printSheet.Cells(2, 1).Value = dataSheet.Cells(i + 1, 1).Value ' 次の人
End If
printSheet.PrintOut
Next i
このコードでは、人数が奇数の場合でも、最終ページに空白が入ることなく、適切にデータを表示させることができます。
4. まとめ
Excel VBAを使って、印刷時に交互にデータを配置する方法を紹介しました。For文を活用することで、データの処理が簡単になり、柔軟に印刷のレイアウトを調整できます。人数が奇数の場合の処理も考慮して、コードを改良することが可能です。


コメント