• ベストアンサー

マクロの組み方について

エクセル97で、マクロを組みたいと思い 質問します 教えて下さい。 現在、マクロを組んでいます。 仮に「印刷A」と云うマクロがあります。 シート1の「A1」のセルに「1」であれば「印刷A」を実行し シート1の「A1」のセルに「1」以外の数字になれば、印刷しない と云うマクロは、どのようにすればいいのでしょうか?? お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • wildcard
  • ベストアンサー率54% (54/100)
回答No.3

#2さんの方法は、印刷を実行した時にのみ自動で実行されるマクロです。マクロ一覧には出てきません。 流れとしては、ユーザーが印刷を実行すると、#2さんのマクロが自動的に実行され、 シート1の「A1」のセルに「1」であれば「印刷A」を実行し シート1の「A1」のセルに「1」以外の数字になれば、印刷しない となります。 もし、マクロ実行→「シート1」の「A1」のセルの値による分岐→「印刷A」実行 or「印刷A」を実行しない と言う流れでマクロを組みたいのならば、下記コードを、「印刷A」のあるモジュールに貼り付けて下さい。 もしシート名が「シート1」でない場合は、変更して下さい。 Sub tesuto()   If Sheets("シート1").Range("A1").Value = 1 Then     Call 印刷A   End If End Sub

free-goo
質問者

お礼

ありがとうございました 私が しりたかったのは、まさしく wildcard さんの 記述通りでした。 たすかりました。 又 何かありましたら アドバイス お願いします。

その他の回答 (2)

  • TTak
  • ベストアンサー率52% (206/389)
回答No.2

失礼、#1マクロ例に"Call 印刷A"の記述が漏れていました。 それから、このコードは、"ThisWorkbook"のモジュールに記入してください。 Private Sub Workbook_BeforePrint(Cancel As Boolean) If Range("A1").Value <> 1 Then  Cancel = True Else  Call 印刷A End If End Sub

free-goo
質問者

お礼

ありがとうございました 又 何かありましたら アドバイス お願いします。

free-goo
質問者

補足

早々の回答有難うございます。 上記の指定通り、作成したのですが、ツール→マクロをしても マクロ一覧には、すでに私の作成したマクロしか、表示してません あと、何が設定もれしているのでしょうか???

  • TTak
  • ベストアンサー率52% (206/389)
回答No.1

BeforePrintイベントで、セルA1の値が1以外なら、パラメータCancelにTrueを入れます。この方法は、マクロが有効でないと使えません。また、印刷プレビューにも適用されるので、セルA1の値が1以外なら、プレビューもできません。 マクロが無効な場合にも対応する方法はいくつかありますが、まずは一般的な方法だけ書いておきます。 Private Sub Workbook_BeforePrint(Cancel As Boolean) If Range("A1").Value <> 1 Then Cancel = True End If End Sub

関連するQ&A