- ベストアンサー
エクセル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です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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"であれば訂正してください。
その他の回答 (2)
- kimino_naha
- ベストアンサー率33% (26/78)
No1 です。 セルA4に"円"がついてました。6行目を .cells(4, 1).Value = worksheets("シート1").cells(Ir, 2).Value & "円" と訂正いたします。
- uro_tan
- ベストアンサー率15% (6/40)
印刷するループの中で if cells(i,1)="" then exit sub のように終了条件を入れてあげればデータがないところで終了させることができます。
お礼
ありがとうございます 助かりました参考にさせていただきます。