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

セルの数字によって、印刷するシートを変えるマクロを教えてください。
例えば、セルA1が6以下であれば、sheet1を印刷し、セルA1が6以上であれば、sheet2を印刷する場合です。
よろしくお願いします。

A 回答 (2件)

実際に使用する時は、


・印刷ボタンを、QAT(クイックアクセスツールバー)につけたほうがよいです。
プレビューには正しくでてきません。
・印刷範囲はあらかじめ設定しておいたほうが安全です。

以下は、ActiveSheet が、Sheet1 に限って反応します。
6以下(6を含む)と6より以上(6を含まない)使用は、No.1さんと同じ。

''ThisWorkbook モジュールに貼り付けます。
Private Sub Workbook_BeforePrint(Cancel As Boolean)
 If ActiveSheet Is Worksheets("Sheet1") Then
  Cancel = True
  With Worksheets("Sheet1").Range("A1")
   Application.EnableEvents = False
   If .Value <= 6 Then
    Worksheets("Sheet1").PrintOut
   ElseIf .Value > 6 Then
    Worksheets("Sheet2").PrintOut
   End If
   Application.EnableEvents = True
  End With
 End If
End Sub
    • good
    • 1

こんばんは!



>例えば、セルA1が6以下であれば・・・
A1セルとは「Sheet1」のA1セルで良いのでしょうかね。

そして、ピッタリ「6」の場合、どちらに判別するのか不明なので
とりあえず、
>6以下の場合は「Sheet1」
>6を超える場合は「Sheet2」としてみました。

一例です。

Sub Sample1()
 Dim wS As Worksheet
  With Worksheets("Sheet1").Range("A1")
   If .Value <> "" And IsNumeric(.Value) Then
    If .Value <= 6 Then
     Set wS = Worksheets("Sheet1")
    Else
     Set wS = Worksheets("Sheet2")
    End If
    wS.PrintPreview '//★//
   Else
    MsgBox "数値を入力!"
    .Select
   End If
  End With
End Sub

※ 印刷プレビューでやめています。
すぐに印刷実行したい場合は「★」の行を
>wS.PrintOut

に変更してください。

※ 必ずSheet1をアクティブにしてマクロを実行してください。
万一、Sheet1のA1セルが数値以外の場合はエラーになります。m(_ _)m
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています