本当はそんなことは、しなくても良いが、関数を使って、VBAを簡単にするため、下記の方法で何度か回答をしています。
もと データのシート1の各行に連番を空き列に振ります。(
A列A2からとします)
フォームの印刷外の1セル(仮にA1とします)に、番号を入れます。
(実際はVBAで順次入れる。下記関数を設定後は、手作業で入れてシート2の内容が変化するさまを確認できます)
フォームの整理番号を入れるセルに
=VLOOKUP(A1,シート1!$A$2:$F$200,2,FALSE)
住所を入れるセルに
=VLOOKUP(A1,シート1!$A$2:$F$200,3,FALSE)
以下略
を入れます。
VBEの標準モジュールで
Sub test01()
Worksheets("Sheet2").Select
d = Range("B65536").End(xlUp).Row
For i = 2 To d
Range("A1") = i
Range("A2:j30").PrintOut
Next i
End Sub
を貼り付け、実行すればd-1枚内容を変えて印刷します。
Range("A2:j30")はシート2(フォーム)の印刷範囲です。
適当に実際にあわせて変えてください。
帳票見出し、項目見出し、フォント、配置、セル高、色、書式、罫線などは手作業で、VBA実行前に整えておいてください。VBAでもできるが、勉強して先の話です。
シート2に作成してある専用のフォームのレイアウトがわからないので適当に、整理番号がA2、住所がB2、生年月日がC2としました。
Sub test()
Set sh1 = Sheets("Sheet1") 'Sheet1をsh1とする
Set sh2 = Sheets("Sheet2") 'Sheet2をsh2とする
x = sh1.Range("A65536").End(xlUp).Row 'Sheet1のA列最終行を取得し、Xとする
For n = 1 To x 'Sheet1の1行目から最終行のデータまで繰り返す。
sh2.Range("A2") = sh1.Cells(n, "A") 'Sheet2のA2にSheet1のA列n行目のデータ
sh2.Range("B2") = sh1.Cells(n, "C") 'Sheet2のB2にSheet1のC列n行目のデータ
sh2.Range("C2") = sh1.Cells(n, "E") 'Sheet2のC2にSheet1のE列n行目のデータ
sh2.PrintOut 'Sheet2を印刷する
Next '繰り返す
End Sub
お礼
有難う御座いました。 マルチポストのつもりはなかったのですが… お気に触られたのであれば、申し訳ありませんでした。 早速がんばってみます。