Chiara 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 esista un modo per stampare tutti i fogli di lavoro contemporaneamente e specificare che un particolare foglio di lavoro debba essere stampato solo a colori.
Questo è più semplice da fare con una macro. Tutto ciò che serve è impostare la proprietà .BlackAndWhite per ciascun foglio di lavoro subito prima che venga stampato. Ad esempio, considera la seguente semplice macro:
Sub PrintSingleColorSheet()
Dim w As Worksheet
Dim S As Integer
' Imposta il foglio che dev'essere a colori
' (tutti gli altri saranno stampati in B/N)
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 vuoi che sia a colori (in questo caso, il numero di indice è 30). Quindi, ogni foglio di lavoro viene esaminato e la proprietà .BlackAndWhite viene impostata su True. Se, tuttavia, la proprietà .Index del foglio di lavoro corrisponde al valore archiviato in S, la proprietà .BlackAndWhite viene impostata su False, ovvero verrà stampata a colori. La stampa viene quindi inviata alla stampante predefinita.
Se lo desideri, la macro potrebbe essere più elaborata, 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 = "Ci sono " & Worksheets.Count & " fogli in questa "
sMsg = sMsg & "cartella di lavoro. Inserisci il numero del singolo "
sMsg = sMsg & "foglio che vuoi stampare a colori (tutti"
sMsg = sMsg & "gli altri verranno stampati in B/N)."
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 = "Hai inserito un valore fuori 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 non rientra nell’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.