Teresa si chiede se esista un modo per formattare una cella in modo che, se il contenuto della cella soddisfa determinati criteri, venga automaticamente stampato un foglio di lavoro specifico. La risposta breve è no, non esiste alcun modo per utilizzare la formattazione per raggiungere questo obiettivo. È tuttavia possibile utilizzare una macro del gestore eventi per eseguire la stampa.
Ad esempio, uno dei gestori eventi supportati da Excel viene attivato ogni volta che viene modificato qualcosa nella cartella di lavoro. È possibile creare un gestore eventi che esamini quale cella è stata modificata. Se si tratta di una cella specifica e se quella cella contiene un valore particolare, è possibile stampare un foglio di lavoro.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$2" Then
If Target.Value = 1001 Then
Worksheets(1).PrintOut
End If
End If
End Sub
Questa macro esamina quale cella è stata modificata. Se è la cella B2 e se la cella contiene il valore 1001, il foglio di lavoro viene stampato automaticamente.
Naturalmente, potresti volere che il contenuto di una cella particolare controlli ciò che viene stampato quando qualcuno sceglie effettivamente di stampare. Ad esempio, se l’utente sceglie di stampare, potresti voler esaminare il contenuto di una cella (come E2) e, in base al contenuto di quella cella, modificare automaticamente ciò che viene stampato. La seguente macro adotta questo approccio:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Application.EnableEvents = False
Select Case Worksheets("Foglio1").Range("E1")
Case 1
Worksheets("Foglio1").PrintOut
Case 2
Worksheets("Foglio2").PrintOut
Case 3
Worksheets("Foglio3").PrintOut
Case 4
Worksheets("Foglio4").PrintOut
Case Else
ActiveSheet.PrintOut
End Select
Cancel = True
Application.EnableEvents = True
End Sub
La macro stampa Foglio1, Foglio2, Foglio3 o Foglio4 a seconda che la cella E2 contenga 1, 2, 3 o 4.