ケンは30枚のワークシートを含むワークブックを持っています。彼は、シート1から29を白黒で、シート30をカラーで印刷したいと考えています。彼は、すべてのワークシートを一度に印刷し、特定のワークシートをカラーのみで印刷するように指定する方法があるかどうか疑問に思います。

これは、マクロを使用して行うのが最も簡単です。印刷する直前に、各ワークシートに.BlackAndWhiteプロパティを設定するだけです。

たとえば、次の単純なマクロについて考えてみます。

Sub PrintSingleColorSheet()

Dim w As Worksheet     Dim S As Integer

' Set worksheet to be in color     ' (All others will print in B/W)

S = 30

For Each w In Worksheets         w.PageSetup.BlackAndWhite = True         If w.Index = S Then             w.PageSetup.BlackAndWhite = False         End If         w.PrintOut     Next w End Sub

マクロは、カラーにしたいワークシートのインデックス番号をS変数に格納します。 (この場合、インデックス番号は30です。)次に、各ワークシートがステップスルーされ、.BlackAndWhiteプロパティがTrueに設定されます。ただし、ワークシートの.IndexプロパティがSに格納されている値と一致する場合、.BlackAndWhiteプロパティはFalseに設定され、カラーで印刷されます。その後、プリントアウトはデフォルトのプリンタに送信されます。

必要に応じて、マクロをより使いこなすことができます。つまり、カラーで印刷するワークシートをユーザーに尋ねることができます。

Sub PrintSingleColorSheet()

Dim w As Worksheet     Dim S As Integer     Dim sTemp As String     Dim sMsg As String

sMsg = "There are " & Worksheets.Count & " worksheets in this "

sMsg = sMsg & "workbook. Please enter the number of the single "

sMsg = sMsg & "worksheet you want to print in color. (All "

sMsg = sMsg & "others will print in black and white.)"



sTemp = InputBox(sMsg)

S = Val(sTemp)

If S > 0 And S <= Worksheets.Count Then         For Each w In Worksheets             w.PageSetup.BlackAndWhite = True             If w.Index = S Then                 w.PageSetup.BlackAndWhite = False             End If             w.PrintOut         Next w     Else         sMsg = "You entered a value that is out of range."

If sTemp <> "" Then             MsgBox sMsg         End If     End If End Sub

このバージョンのマクロは、ユーザーにワークシート番号の入力を求めます。入力した値が範囲外の場合、エラーメッセージが表示され、マクロは何も出力しません。ユーザーが[キャンセル]をクリックするか、入力ボックスを空のままにすると、マクロは何も印刷せずに終了します。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(13738)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。