Ken的工作簿包含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_是您进行经济高效的Microsoft Excel培训的来源。

本提示(13738)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。