重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

はじめまして。よろしくお願いします。

エクセルである名簿を作っています。

<sheet1>
A列に会員番号、B列に氏名、C列に住所・・・・というような表にしています。

<sheet2>
sheet2のあるセルに<sheet1>の会員番号を入力するとその会員のデータが決められた様式ででてくるようにしました。


今から、この会員全員分のデータを全て<sheet2>の様式で印刷したいのですが、手作業で会員番号を入力して、印刷をしてというやり方だとかなり時間がかかりそうです。また他にも今から仕事があるので、何かよい方法を教えてください。マクロでできるのだろうとは思うのですが、昔使ったことが少しあるだけで全然覚えていません。よろしくお願いいたします。

*会員番号順に並んでいますが、数はとんでいます。例えば、1、5,19,28,29,50・・・・という具合です。

A 回答 (1件)

Sheet1、Sheet2を区別するため


Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("sheet1")
Set sh2 = Worksheets("sheet2")
を入れる。
Sheet1の第1行から、第x行まで処理するため
For i = 1 To x
Next i
を入れる。
Sheet1からSheet2へセルごとにデータを写すため
sh2.Cells(u, v) = sh1.Cells(i, "B")
を項目数だけ並べる。Sheet2のセルのU行,V列とSheet1の列Bは印刷レイアウト(項目配置)から決まる。
Sheet1の1行でSheet2の印刷用紙1枚のデータがセットされると、印刷する。
それにはsh2.Range("A1:J40").PrintOutを入れる。
A1:j40はSheet2の印刷範囲で決まる。
印刷範囲は様式で決まる。
ざっと
Sub test01()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("sheet1")
Set sh2 = Worksheets("sheet2")
x = 100 '第100行までの場合
For i = 1 To x
sh2.Cells(u, v) = sh1.Cells(i, "B")
'・・・・項目数だけ列挙記述
sh2.Range("A1:J40").PrintOut '印刷
Next i
End Sub
のようになる。
住所2(例えばマンション名)などで、人によりあったりなかったりする項目は、印刷ごとにクリアしておくこと。
    • good
    • 0
この回答へのお礼

お礼が遅くなり大変失礼しました。

当日は、時間的に焦っていたために結局手作業になりましたが、後から改めて読むととても分かりやすい説明でした。今後も同じようなことが何度もありそうなので、参考にさせていただきます。

詳しい解説本当にありがとうございました。
またよろしくお願いします。

お礼日時:2004/04/27 22:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!