dポイントプレゼントキャンペーン実施中!

例えばA列に担当者コードが1から100まであって昇順に並んでいます。この表を印刷するときにデータが変わったところで改ページの挿入がしたいのですが、どうやればいいのかわかりません。
手作業でするとすごく時間がかかってしまいます。しかも毎週出すデータなので。
お願いします


あと、データのある範囲を選択してその部分を印刷範囲に設定したいのですがVBAでどのようになるでしょうか。

A 回答 (2件)

概ねこんな感じかと・


(あくまでサンプルなので実データに合わせて変更して下さい)
'データの変わり目で改ページ挿入
'解除するときは、右クリックから「全ての改ページの解除」
Do While Worksheets(SheetName).Cells(rindex, cIndex) <> "" '空白セルでない間
If Worksheets(SheetName).Cells(rindex - 1, cIndex) <> Worksheets(SheetName).Cells(rindex, cIndex) Then '1つ前の行とデータが違ったら
If rindex <> 6 Then '最初の行は除く
Worksheets(SheetName).Range("B" + Trim$(Str$(rindex))).Activate
ActiveWindow.SelectedSheets.HPageBreaks.Add ActiveCell '改ページ挿入
' ActiveWindow.SelectedSheets.VPageBreaks.Add ActiveCell
End If
End If
rindex = rindex + 1
Loop

>データのある範囲を選択してその部分を印刷範囲に設定したいのですがVBAでどのようになるでしょうか。
ActiveSheet.PageSetup.PrintArea = Selection.Address
Selection は、現在選択されている範囲
Selection でなくても、適当なRange オブジェクトでよい。
    • good
    • 0
この回答へのお礼

ありがとうございます。ここでまとめてお礼を言わせていただきます。初めて目にする単語が多くてわかるかどうか心配ですがとりあえずこのとおりにやって修正していきたいと思います。

お礼日時:2006/02/02 10:01

(第1優先)


1ページの最大印刷行数を50行として
50行を超えたかを判定
(第二優先)
担当者コードが変わったか。上から全行順次、担当者コードが前の行といつも比較して、変わったら、その前行まで印刷する。
ただし50行以上進むこともあるので、
ーーー
だから担当者コードが変わったら、現担当コードが始まった行から、50行以上進んだか判定し、超えていたら、50行ずつ印刷し、50行以下の端数行分を最後に印刷する。
そして担当者コード変化の判定を続ける。
ーーー
印刷はRange範囲.PrintOut
を発行する。改ページは行われます。
ーーーーー
上記の、Range範囲の指定は
Range(Cells(開始行、”A”),Cells(変化察知前行、印刷する最右列記号)).PrintOutがお勧め。
    • good
    • 0

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