Post by A.R.C'è modo di inserire nell'Intestazione o nel Piè di pagina il contenuto
(variabile, ovviamente) di una cella, senza dover ricorrere tutte le volte
che il contenuto cambia a "Imposta pagina"?
Se è possibile soltanto con una macro, qualcuno mi aiuta? Grazie. A.R.
-----------------------------------------------------
Puoi creare un pulsante e associare questa macro
Sub AnteprimaDiStampa()
With ActiveSheet.PageSetup
'Intestazione
.LeftHeader = Range("j1").Value 'Sinistra
.CenterHeader = Range("j2").Value 'Centro
.RightHeader = Range("j3").Value 'Destra
'Piè di pagina
.LeftFooter = Range("j4").Value 'Sinistra
.CenterFooter = Range("j5").Value 'Centro
.RightFooter = Range("j6").Value 'Destra
End With
ActiveWindow.SelectedSheets.PrintPreview
End Sub
In questo modo puoi pilotare l'intestazione e il piè di pagina in ognuna
sinistra, centro, destra
Ovviamente puoi cambiare le celle che contengono i tuoi dati, anche con
riferimento ad altri fogli, o sostituirli con variabili e eliminare le righe
che non ti servono.
Ovviamente si può fare meglio, ma così dovrebbe funzionare.
Ciao
---------------------------------------------
Niente da fare... prova e riprova, sempre errore.
Ti riproduco la macro nella quale ho inserito il tuo codice: mi dici - per
favore - dov'é che sbaglio ?
Grazie. Ciao. A.R.
Sub Stampa_Foglio1()
Dim WB As Workbook
Dim SH As Worksheet
'=> Dim RightFooter As Long ' (mio tentativo)
Set WB = ThisWorkbook
Set SH = WB.Sheets("Foglio1")
Sheets("Foglio1").Select
' =======================
'=> With ActiveSheet.PageSetup
'=> .RightFooter = Range("L3").Value
' ===> Errore di compilazione <===
' ===> Sub o Function non definita <===
'=> End With
' =======================
On Error Resume Next
Columns("B2:N22").Select
ActiveWindow.SelectedSheets.PrintPreview
End Sub
Da utente poco esperto di VBA mi vengono in mente alcune osservazioni sul
tuo codice:
1) Se non è un frammento di una routine che svolge altre operazioni, ma si
limita ad aprire l’anteprima di stampa trovo inutile definire le variabili WB
e SH, basta l’indirizzamento al “Foglio1”
2) Definire la variabile RightFooter non serve in quanto RightFooter non è
una variabile, ma una proprietà di PageSetup e può assumere il valore di una
cella, come nel tuo caso, o quello di una variabile, o essere imposto, o
altro ancora.
3) Così come scritto non dovrebbe generarsi l’errore “Sub o Function non
definita” in quanto non viene richiamata alcuna routine esterna.
4) Non credo sia il caso di invocare l’intercettazione degli errori perchè
non è previsto che possano verificarsi errori.
5) Columns(“B2:N22”).Select è errato per selezionare un intervallo.
L’istruzione corretta è Range(“B2:N22”).select (non è comunque l'unico modo
per selezionare un intervallo), ma a cosa ti serve qui se devi solo stampare?
Se intendi selezionare l’intervallo “B2:B22” come area di stampa devi agire
sulla proprietà PrintArea di PageSetup, magari imponendo anche l’orientamento
Landscape del foglio
Prova questa:
----------------------------------------------------------
Sub Stampa_Foglio1()
Sheets("Foglio1").Select
With ActiveSheet.PageSetup
.RightFooter = Range("L3").Value
.PrintArea = "B2:N22"
.Orientation = xlLandscape
End With
ActiveWindow.SelectedSheets.PrintPreview
End Sub
-------------------------------------------------------------------
Ciao