[[20150312182654]] 『印刷時特定のセルに入力があればそのページすべて』(あーちゃん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『印刷時特定のセルに入力があればそのページすべて印刷し、入力がなければ印刷しない』(あーちゃん)

曜日の固定されたボックス型のカレンダー型(月曜日始まり)の表を
作成していますが、1日の工程などを書き込むスペースが大きいため
全部で4ページに渡ります。
ただ、土曜日始まりで大の月ならば4ページの印刷ですが
日曜日始まりの2月などでしたら3ページの印刷で済みます。
これを自動で印刷範囲を変えるマクロはできるのでしょうか。

たとえば1ページ目ならば1ページ目の最期の日付は絶対に入力されているので
そのセル(L8)に入力があれば印刷する。
2ページ目は最初の日付のセル(B10)は入力されるので印刷する。
3ページ目は最初の日付のセル(B16)は入力されるので印刷する。
4ページ目は最初の日付のセル(B22)に入力せれていれば
4ページ目すべてを印刷するが、入力されていなければ印刷しない。
このような方法のマクロは可能ですか。
それとも、もっと簡単なアプローチはありますでしょうか。

< 使用 Excel:Excel2007、使用 OS:Windows8 >


 数式で印刷範囲を設定するというような方法も出来そうですが、
http://miyahorinn.fc2web.com/tips/s_07_10.html

 マクロでやるとしてこんな感じでしょうか。
 ThisWorkbook の下においてください。

 Private Sub Workbook_BeforePrint(Cancel As Boolean)
    If ActiveSheet.Name <> "印刷シート" Then Exit Sub  '// 実際の対象シート名にしてください

    Cancel = True
    If Range("L8").Value = "" Then
        MsgBox "印刷データがありません。"
        Exit Sub
    End If

    Application.EnableEvents = False
    If Range("B22").Value <> "" Then
        ActiveSheet.PrintOut From:=1, To:=4
    ElseIf Range("B16").Value <> "" Then
        ActiveSheet.PrintOut From:=1, To:=3
    ElseIf Range("B10").Value <> "" Then
        ActiveSheet.PrintOut From:=1, To:=2
    Else
        ActiveSheet.PrintOut From:=1, To:=1
    End If
    Application.EnableEvents = True
 End Sub

(Mook) 2015/03/12(木) 19:55


Mookさん 教えていただきありがとうございます。
マクロは便利ですが、コードの組み立てが本当に難しいです。
今回のマクロでページの印刷の節約ができます。
ありがとうございました。
(あーちゃん) 2015/03/12(木) 20:29

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.