Excel VBAを使って請求書を作成しているとき、1ページに収まりきらないデータを2ページ目に自動で追加したいというニーズが出てきます。この記事では、請求書のデータを自動的に複数ページにわたって追加する方法について解説します。特に、VBAを使って2ページ目以降の処理を追加する方法を紹介します。
請求書作成の基本的な流れ
まず、基本的な請求書作成の流れを確認しましょう。以下は、ユーザーが選択した顧客名をもとに請求書を生成するためのコードの概要です。
Dim i As Long
Dim Cnt As Long
Dim Kokyaku As String
Cnt = 12
Kokyaku = myForm.myComboBox.Value
Worksheets("請求書雛形").Copy After:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = Kokyaku
このコードでは、顧客名に基づいて「請求書雛形」をコピーし、新しいシートを作成しています。次に、顧客の販売データをそのシートに入力していきます。
複数ページにわたる請求書の作成方法
1ページ目のデータが埋まったときに、2ページ目を自動で追加するためには、次のような処理を行います。
1ページ目が埋まった時点で、VBAで新しいシートを追加し、そこに残りのデータを挿入する処理を作成します。具体的には、Cnt
変数が設定した最大値を超えた場合に、新しいシートを作成してデータをコピーする方法です。
コードの変更例
以下は、請求書が1ページに収まりきらない場合に2ページ目を自動で作成するためのコードです。
If Cnt > 50 Then
Worksheets("請求書雛形").Copy After:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = Kokyaku & "_2"
Cnt = 12 '新しいシートの先頭行を設定
End If
このコードでは、Cnt
が50を超えた時に新しい請求書シートを作成し、行数をリセットしています。これにより、データが1ページに収まりきらない場合でも、2ページ目以降に自動的に追加されます。
データを新しいシートに追加する
新しいページにデータを追加するためには、既存のデータを適切な位置にコピーする必要があります。以下は、2ページ目以降のデータを新しいシートにコピーするコード例です。
For i = 4 To 10000
If Worksheets("売上").Cells(i, 3).Value = Kokyaku Then
Worksheets(Kokyaku).Cells(Cnt, 1).Value = Worksheets("売上").Cells(i, 2).Value '日付
Worksheets(Kokyaku).Cells(Cnt, 2).Value = Worksheets("売上").Cells(i, 5).Value '商品
Worksheets(Kokyaku).Cells(Cnt, 3).Value = Worksheets("売上").Cells(i, 6).Value '単価
Worksheets(Kokyaku).Cells(Cnt, 4).Value = Worksheets("売上").Cells(i, 7).Value '数量
Worksheets(Kokyaku).Cells(Cnt, 5).Value = Worksheets("売上").Cells(i, 8).Value '金額
Cnt = Cnt + 1
End If
Next
これにより、1ページ目が埋まった段階で新しいシートにデータがコピーされ、請求書が複数ページにわたって作成されます。
まとめ
Excel VBAを使って請求書を作成する際、データが1ページに収まりきらない場合には、新しいページを自動で作成して追加する方法を実装できます。上記のコード例を参考に、複数ページにわたる請求書の作成を効率的に行いましょう。このような自動化を行うことで、手作業での請求書作成にかかる時間を大幅に削減できます。
コメント