プロが教えるわが家の防犯対策術!

エクセルで分類のある住所録をそれぞれの分類毎のフォームに飛ばして印刷されるしくみを作成中です。
「分類毎にシートに分ける」でnishi6さんに教えていただいたVBAで作っているのですが、マクロで実行かけて一括で印刷までさせてしまわずに、1件ずつ表示させながら、印刷("次を表示→印刷"の繰返し)させていきたいので、アドバイスをお願い致します。
分類は、5つです。現在、アクティブシートの印刷のVBAは分かったのですが、各シートに飛んだ後、それを表示させる事と、次を表示させる事が出来ません。
どうか、宜しくお願い致します。

A 回答 (1件)

方法1.今のまま、印刷プレビュー(PrintPreview)にしておいて、プレビュー画面で確認して、印刷する場合は「印刷」ボタン、印刷しない場合は「閉じる」ボタンを押す方法はどうでしょうか。


方法2.各シートに飛んだときにメッセージボックスを表示するようにしてみました。前回のVBAの後半部分を修正、追加してみて下さい。(行の後ろに '*** がある行です)
「ok」で印刷(今はプレビュー)して次のデータを表示、「キャンセル」で次のデータの表示を行います。
メッセージボックスの表示位置が制御できないので画面の真中に出てしまいます。じゃまな感じもします。ユーザーフォームなら画面表示位置を指定できるので勉強してみてください。

'各シートに飛ばす(Sheet2から。Sheetは連番)
Dim rw As Long '行カウンタ
Dim br As Integer '各データの分類
Dim ws As Worksheet '印刷をするシート
'Application.ScreenUpdating = False 'シート表示を固定 ***コメント行にした
With ws1.Range("A1")
For rw = startRow To lastRow '指定した範囲を印刷
br = .Offset(rw, BunruiCol) + 1 'シート番号を求める
Set ws = Worksheets("Sheet" & br) 'シートを決定
For cl = 0 To columnMax '1行分目的のシートに書く
ws.Range("A1").Offset(0, cl) = .Offset(rw, cl)
Next
ws.Activate
If MsgBox("印刷しますか?", vbOKCancel, "確認") = vbOK Then '***追加***
'PrintPreview を PrintOut に変えれば印刷を実行
ActiveSheet.PrintPreview
End If '***追加***
Next
End With
'Application.ScreenUpdating = True 'シート表示の固定解除 ***コメント行にした
ws1.Activate 'Sheet1を表示
    • good
    • 0
この回答へのお礼

ありがとうございました。ここまで出来たら後は、いろいろ勉強して飾り付けをしていきます。nishi6さん本当に、いろいろとありがとうございました。
今回の回答で、ようやくこの辺でこういう処理をさせているのだなぁ!?という程度ですが分かってきました。nishi6さんのおかげです。私ももっと勉強して、いろいろ作っていきたいと思います。実践あるのみですね!

お礼日時:2001/05/04 07:35

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