Ho ricevuto questa riposta per la generazione di un'anteprima di sezioni di fogli (in corsivo).
Poi, ho provato ad inserire un'altra selezione, sempre del primo foglio,
Ma mi dice "Variabile SH2" non definita...cosa sbaglio?
Grazie
'=========>>
Option Explicit
'--------->>
Public Sub Tester()
Dim WB As Workbook
Dim SH As Worksheet, SH2 As Worksheet
Dim rng_Stampa As Range, rng2_Stampa As Range
Dim LRow As Long
Dim CalcMode As Long
Const sFoglio As String = "Foglio1" '<<=== Modifica
Const sFoglio2 As String = "Foglio2" '<<=== Modifica
Const sIntervallo_Stampa As String = "A1:M36"'<<=== Modifica
Const sIntervallo2_Stampa As String = "B5:N22"'<<=== Modifica
Set WB = ThisWorkbook
With WB
Set SH = .Sheets(sFoglio)
Set SH2 = .Sheets(sFoglio2)
SH.PageSetup.PrintArea = sIntervallo_Stampa
SH2.PageSetup.PrintArea = sIntervallo2_Stampa
.Worksheets(Array(sFoglio, sFoglio2)).PrintPreview 'Out
End With
End Sub
'<<=========
VARIAZIONE PER TERZA SELEZIONE
'=========>>
Option Explicit
'--------->>
Public Sub Tester()
Dim WB As Workbook
Dim SH As Worksheet, SH3 As Worksheet
Dim rng_Stampa As Range, rng3_Stampa As Range
Dim LRow As Long
Dim CalcMode As Long
Const sFoglio As String = "SINTESI"
Const sFoglio2 As String = "BUDGET"
Const SFoglio3 As String = "SINTESI"
Const sIntervallo_Stampa As String = "A1:M15"
Const sIntervallo2_Stampa As String = "A1:M30"
Const sIntervallo3_Stampa As String = "C4:F18"
Set WB = ThisWorkbook
With WB
Set SH = .Sheets(sFoglio)
Set SH2 = .Sheets(sFoglio2)
Set SH3 = .Sheets(SFoglio3)
SH.PageSetup.PrintArea = sIntervallo_Stampa
SH2.PageSetup.PrintArea = sIntervallo2_Stampa
SH3.PageSetup.PrintArea = sIntervallo3_Stampa
.Worksheets(Array(sFoglio, sFoglio2, SFoglio3)).PrintPreview 'Out
End With
End Sub
'<<=========
Il tuo problema immediato è dovuto al fatto che non hai dimensionato la variabile
SH2. Quindi, sostituisci
Dim SH As Worksheet, SH3 As Worksheet
con:
Dim SH As Worksheet, SH2 as Worksheet, SH3 As Worksheet
Ancora più importante, tuttavia, hai tentato di convertire il mio codice, che stampa un singolo intervallo su più fogli, per stampare più intervalli su più fogli. Il tuo adattamento non raggiungerà questo obiettivo. Supponendo che la situazione reale non
sia sostanzialmente più complessa di quanto indicato, prova invece la seguente versione del mio codice:
'=========>>
Option Explicit
'--------->>
Public Sub Tester()
Dim WB As Workbook
Dim SH As Worksheet, SH2 As Worksheet
Dim rng_Stampa As Range, rng3_Stampa As Range
Dim LRow As Long
Dim CalcMode As Long
Const sFoglio As String = "SINTESI"
Const sFoglio2 As String = "BUDGET"
Const sIntervallo_Stampa As String = "A1:M15"
Const sIntervallo2_Stampa As String = "A1:M30"
Const sIntervallo3_Stampa As String = "C4:F18"
Set WB = ThisWorkbook
With WB
Set SH = .Sheets(sFoglio)
Set SH2 = .Sheets(sFoglio2)
SH.PageSetup.PrintArea = sIntervallo_Stampa
SH2.PageSetup.PrintArea = sIntervallo2_Stampa
.Worksheets(Array(sFoglio, sFoglio2)).PrintOut
With SH2
.PageSetup.PrintArea = sIntervallo3_Stampa
.PrintOut
.Select
End With
End With
End Sub
'<<=========
===
Regards,
Norman
