У Кена есть рабочая тетрадь, содержащая 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 и Excel в Office 365.