Ken ha una cartella di lavoro contenente 30 fogli di lavoro. Vorrebbe stampare i fogli da 1 a 29 in bianco e nero e il foglio 30 a colori. Si chiede se esiste un modo per stampare tutti i fogli di lavoro contemporaneamente e specificare che un particolare foglio di lavoro deve essere stampato solo a colori.

È più facile farlo con una macro. Tutto ciò che serve è impostare la proprietà .BlackAndWhite per ogni foglio di lavoro appena prima che venga stampato.

Ad esempio, considera la seguente semplice macro:

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

La macro memorizza nella variabile S il numero di indice del foglio di lavoro che si desidera sia a colori. (In questo caso, il numero di indice è 30). Quindi, ogni foglio di lavoro viene spostato e la proprietà .BlackAndWhite impostata su True. Se, tuttavia, la proprietà .Index del foglio di lavoro corrisponde al valore memorizzato in S, la proprietà .BlackAndWhite è impostata su False, il che significa che verrà stampata a colori. La stampa viene quindi inviata alla stampante predefinita.

Potresti, se lo desideri, diventare più elaborato con la macro, il che significa che potresti chiedere all’utente quale foglio di lavoro stampare a colori:

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

Questa versione della macro chiede all’utente di inserire un numero di foglio di lavoro. Se il valore immesso è fuori intervallo, viene visualizzato un messaggio di errore e la macro non stampa nulla. Se l’utente fa clic su Annulla o lascia vuota la casella di input, la macro esce semplicemente senza stampare nulla.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (13738) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 e Excel in Office 365.