Avevo gia' preparato questa risposta
In un foglio che chiamerai "Indice" disegna le tue "Caselle di controllo" e (tramite l'opzione Formato controllo) assegna a ognuna di esse il "Collegamento cella" ad A1, A2, A3 etc; in questo modo lo stato della casella di controllo sara' riportato in A1, A2 etc
In B1, B2, B3 etc tramite formula indica in chiaro il nome foglio cui la casella e' associata; es, in B1:
- Codice: Seleziona tutto
=SE(A1;"Foglio2";"")
In questo modo quando spunti la casella collegata ad A1 in B1 comparira' la scritta Foglio2
Poi in un modulo vba inserisci questa macro:
- Codice: Seleziona tutto
Sub SelectedPrint()
Dim I As Long
'1- scegli printer:
SelPrint = Application.Dialogs(xlDialogPrinterSetup).Show
If SelPrint = False Then
MsgBox "Stampa Cancellata"
Exit Sub
End If
'2- stampa fogli selezionati:
Application.ScreenUpdating = False
With Sheets("Indice")
For I = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
If .Cells(I, "B") <> "" Then
Sheets(.Cells(I, "B").Value).Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
End If
Next I
End With
Application.ScreenUpdating = True
Sheets("Indice").Select
End Sub
Eventualmente assegnala a un pulsante che disegnerai sempre sul foglio Indice
All'occorrenza spunta le caselle di controllo e poi avvia la Sub SelectedPrint.
Per essere stampati i fogli non devono risultare "nascosti"; se opti per nasconderli devi attivarli prima di mandarli in stampa.
Ciao