• ベストアンサー

エクセルVBAについて

はじめてのVBAで本を読んでも使い方がわからないので教えてほしいのですが シート1にこのような表を作成して   A    B    1山田   500 2伊藤 20000 3佐藤    50 ・ ・ ・ シート2に    A   B    C 1    請求書 2 3 山田 4 500円 というような請求書を印刷していくVBAを作りたいのですが人数については10人から300人とその時々で変化するのでデータがないときは 印刷もそこで終わりという風にしたいのですが、、、 よろしくお願いします。 エクセル2003 XPです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Sub PrOutTest () Dim Ir as Long with worksheets("シート2") for Ir = 1 to worksheets("シート1").cells(65000, 1).end(xlup).row .cells(3, 1).Value = worksheets("シート1").cells(Ir, 1) .cells(4, 1).Value = worksheets("シート1").cells(Ir, 2) .PrintOut next Ir end with end sub 4行目後半のworksheets("シート1").cells(65000, 1).end(xlup).row でシート1の入力されている最終行を求めています。 for to next で 1行目から最終行まで同じ処理を繰り返しています。 最終行の処理が終わるとマクロを終了します。 手元にエクセルがないので確認していませんが、コピーしていただければたぶん動くと思います。 シート1が"sheet1"であれば訂正してください。

tosih
質問者

お礼

ありがとうございます 助かりました参考にさせていただきます。

その他の回答 (2)

回答No.3

No1 です。 セルA4に"円"がついてました。6行目を .cells(4, 1).Value = worksheets("シート1").cells(Ir, 2).Value & "円" と訂正いたします。

  • uro_tan
  • ベストアンサー率15% (6/40)
回答No.2

印刷するループの中で if cells(i,1)="" then exit sub のように終了条件を入れてあげればデータがないところで終了させることができます。

関連するQ&A