• ベストアンサー

シートのセルの数値がゼロ0のときは、印刷しない方法は

Windows7 Excel2007でマクロ作成の初心者です。 シート数が20枚のブックがあります。セルH3には数値が入っています。 このセルが空欄もしくは数値0のときは、そのシートの印刷をやめたいです。 現在、印刷は以下のコードで実行しています。印刷を省略するにはどうしたらよろしいでしょうか。 Sub シートの印刷() Application.ScreenUpdating = False Dim i As Integer For i = 1 To Worksheets.Count - 9 Worksheets(i).Activate ActiveSheet.PageSetup.PrintArea = "$B$46:$U$89" ActiveWindow.SelectedSheets.PrintOut Next i Worksheets(1).Activate Application.ScreenUpdating = True End Sub

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

IFでは空白も0と判定されますので、0だけ比較すればいいでょう。 また、印刷するシートをいちいちアクティブにする必要はありません。 '-------------------------------------------------- Sub シートの印刷()   Dim i As Integer   For i = 1 To Worksheets.Count - 9     With Worksheets(i)       If .Range("H3").Value <> 0 Then         .PageSetup.PrintArea = "$B$46:$U$89"         .PrintOut       End If     End With   Next i End Sub '---------------------------------------------- 以上です。  

aitaine
質問者

お礼

ありがとうございました。おかげさまでできました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

Sub sheetsprint() Dim sh As Worksheet For Each sh In Worksheets If sh.Range("H3").Value <> 0 And sh.Range("H3").Value <> "" Then MsgBox sh.Name sh.PageSetup.PrintArea = "$A$1:$C$5" ' "$B$46:$U$89" sh.Range("$A$1:$C$5").PrintOut End If Next End Sub 上記は質問にコードと少し変えてます。 "$A$1:$C$5"でテストしたので、質問の範囲に戻してください。 この質問の回答は、IF文を1行入れればすむ、だけのことではないですか。

aitaine
質問者

お礼

すみません。これからもっと勉強します。ありがとうございました。

関連するQ&A