- ベストアンサー
エクセルのマクロ印刷について
ある経費精算書を作っています。 シート1に入力フォーム。シート2に印刷用フォームです。 シート1には、入力もれがないように、すべて入力された場合のみにあるセルに「OK」とでるように設定しました。 「OK」になったときのみ、印刷可能にしたいのですが・・・ できれば、「OK」じゃないときに印刷しようとすると「エラーのため印刷できません」等のメッセージをだしたいのですが・・・ また、シート1は印刷できず、シート2の印刷フォームのみ常に印刷するようにしたいのです。(印刷用ボタン作成するつもりですが) ぜひぜひ教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ANo.1のjo-zenです。少し、わかりづらかったかもしれませんので、補足します。以下のURLを参考にしてみてください。 http://www.excel7.com/trouble12.htm ALTキー+F11キーで、 Visual Basic Editor を開いた時に、上のサイトにあるように、画面がなっていればいいのですが、コード入力のウインドウしか表示されない場合もあるかと思います。その場合は、表示から「プロジェクト エクスプローラ」を選択してあげてください。「プロパティ ウインドウ」も選んで表示させてもいいのですが、作業にはあまり関係ありません。 「プロジェクト エクスプローラ」で「ThisWorkbook」をダブルクリックして、右の画面で、プロシジャーを「BeforePrint」を選んで、下のコード欄に以下のように入力してみてください。シート1のA1セルにOKが入るかどうかということで、シート2を印刷するかどうかを決める場合の例です。 Private Sub Workbook_BeforePrint(cancel As Boolean) If ActiveSheet.Name = "Sheet1" Then MsgBox "このページは印刷できません" cancel = True End If If Worksheets("Sheet1").Range("A1").Value = "OK" Then Worksheets("Sheet2").PrintOut Copies:=1, Collate:=True Else: MsgBox "エラーのため印刷できません" cancel = True End If End Sub シート1を開いている状態で、印刷ボタンを押した場合、シート1は印刷できない旨のメッセージがでます。シート1のA1がOKとなっていれば、続けてシート2が自動で印刷されます。OKでなければ、「エラーのため印刷できません」と表示されます。 シート2を開いている状態で、印刷ボタンを押した場合、シート1のA1がOKとなっていれば、シート2が印刷されます。OKでなければ、「エラーのため印刷できません」と表示されます。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
>印刷用ボタン作成するつもりですが) であればこのコマンドボタンのクリックイベントに #1、#2のご回答の Private Sub Workbook_BeforePrint(cancel As Boolean) の中身を入れることになるのかな。むしろ印刷操作と2重になって面倒では。 印刷コマンドボタンを作っても、操作者がファイルー印刷・・の操作を抑止するのは、BeforePrintイベントに書くことになるように思うが。 == 仕事にエクセルを使う場合は、VBAを使うことは必須だと思うがその1例と思う。 その辺は大丈夫なのかな。 == 標題の>エクセルのマクロ印刷について で受ける意味は、別にマクロというプログラムのコードを印刷する という風な意味もある。 マクロで印刷について、マクロを使って印刷について とすべきと思った。
お礼
言葉がたりませんでした。すみません。 確かに勉強を始めたばかりで・・・ もっと頑張らなくては!! ありがとうございました。
- jo-zen
- ベストアンサー率42% (848/1995)
以下のURLを参考にしてみてください。 http://www.melma.com/backnumber_11224_926204/
お礼
丁寧なご指導ありがとうございました。 できました!できました!! 本当にありがとうございました。