Discussione:
Intestazione/Piè di pag. collegati a cella
(troppo vecchio per rispondere)
A.R.
2009-02-15 16:51:17 UTC
Permalink
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. (il
saccente)
N.B.: la nuova firma sta soltanto ad indicare che son consapevole delle mie
scarse, scarsissime, infime nozioni, consapevolezza che tuttavia a volte non
mi impedisce di sparacchiar presuntuose cazzate a chi credo ne sappia ancor
meno di me.
P.S.: però la lingua italiana per troppi è proprio una sconosciuta: a volte
mi meraviglio della capacità interpretativa degli MVP.
Paolo
2009-02-15 18:24:05 UTC
Permalink
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. (il
saccente)
N.B.: la nuova firma sta soltanto ad indicare che son consapevole delle mie
scarse, scarsissime, infime nozioni, consapevolezza che tuttavia a volte non
mi impedisce di sparacchiar presuntuose cazzate a chi credo ne sappia ancor
meno di me.
P.S.: però la lingua italiana per troppi è proprio una sconosciuta: a volte
mi meraviglio della capacità interpretativa degli MVP.
In VBA puoi provare così:

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
delle posizioni:
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
A.R.
2009-02-16 07:54:31 UTC
Permalink
Post by Paolo
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. (il
saccente)
N.B.: la nuova firma sta soltanto ad indicare che son consapevole delle mie
scarse, scarsissime, infime nozioni, consapevolezza che tuttavia a volte non
mi impedisce di sparacchiar presuntuose cazzate a chi credo ne sappia ancor
meno di me.
P.S.: però la lingua italiana per troppi è proprio una sconosciuta: a volte
mi meraviglio della capacità interpretativa degli MVP.
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
-----------------------------------
Grazie mille! Ora ci provo. Buona giornata. A.R.
A.R.
2009-02-17 10:59:05 UTC
Permalink
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
Paolo
2009-02-18 08:05:01 UTC
Permalink
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
A.R.
2009-02-18 08:49:37 UTC
Permalink
Post by Paolo
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
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
----------------------------------------------------------
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
Peeeeerfetto! Gira. Grazie mille. Adesso cerco anche di capire qual era
l'errore. Ciao. Ancora grazie. A.R.
A.R.
2009-02-18 11:28:44 UTC
Permalink
Post by A.R.
Post by Paolo
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
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
----------------------------------------------------------
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
-------------------------------------------------------------------
Peeeeerfetto! Gira. Grazie mille. Adesso cerco anche di capire qual era
l'errore. Ciao. Ancora grazie. A.R.
---------------------------------------------------------------------
:o[ Niente da fare! Ha funzionato una volta sola, in una cartella con il
solo Foglio1. Poi (superata la riga "With ActiveSheet.PageSetup" è
riapparso il maledetto errore "Sub o Function non definita". Vado a
buttarmi in Po... No, so nuotare.
Ho cercato inutilmente di decriptare le ermetiche istruzioni di MS, ma non
ci ho capito niente (e dire che sono abbonato alla Settimana Enigmistica da
anni). Quali altri tentativi, prima del suicidio? A.R.
N.B.: macro copiata tal quale, senza modifiche.
Paolo
2009-02-19 17:31:02 UTC
Permalink
Post by A.R.
Post by A.R.
Post by Paolo
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
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
----------------------------------------------------------
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
-------------------------------------------------------------------
Peeeeerfetto! Gira. Grazie mille. Adesso cerco anche di capire qual era
l'errore. Ciao. Ancora grazie. A.R.
---------------------------------------------------------------------
:o[ Niente da fare! Ha funzionato una volta sola, in una cartella con il
solo Foglio1. Poi (superata la riga "With ActiveSheet.PageSetup" è
riapparso il maledetto errore "Sub o Function non definita". Vado a
buttarmi in Po... No, so nuotare.
Ho cercato inutilmente di decriptare le ermetiche istruzioni di MS, ma non
ci ho capito niente (e dire che sono abbonato alla Settimana Enigmistica da
anni). Quali altri tentativi, prima del suicidio? A.R.
N.B.: macro copiata tal quale, senza modifiche.
Mi sembra assolutamente strano.
Sul mio pc (Excel 2003) funziona bene e ogni volta.
La macro è piccola, semplice e corretta.
L'indicazione di errore "Sub o function..." non *deve* comparire perchè
l'errore non c'è.
Ovviamente agisce solo sul Foglio1 perchè la costringiamo a farlo.
Eliminando la prima riga (Sheets ...) agirà sul foglio attivo.
Ciao
A.R.
2009-02-20 10:11:13 UTC
Permalink
Post by Paolo
Post by A.R.
Post by A.R.
Post by Paolo
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
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
----------------------------------------------------------
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
-------------------------------------------------------------------
Peeeeerfetto! Gira. Grazie mille. Adesso cerco anche di capire qual era
l'errore. Ciao. Ancora grazie. A.R.
---------------------------------------------------------------------
:o[ Niente da fare! Ha funzionato una volta sola, in una cartella con il
solo Foglio1. Poi (superata la riga "With ActiveSheet.PageSetup" è
riapparso il maledetto errore "Sub o Function non definita". Vado a
buttarmi in Po... No, so nuotare.
Ho cercato inutilmente di decriptare le ermetiche istruzioni di MS, ma non
ci ho capito niente (e dire che sono abbonato alla Settimana Enigmistica da
anni). Quali altri tentativi, prima del suicidio? A.R.
N.B.: macro copiata tal quale, senza modifiche.
Mi sembra assolutamente strano.
Sul mio pc (Excel 2003) funziona bene e ogni volta.
La macro è piccola, semplice e corretta.
L'indicazione di errore "Sub o function..." non *deve* comparire perchè
l'errore non c'è.
Ovviamente agisce solo sul Foglio1 perchè la costringiamo a farlo.
Eliminando la prima riga (Sheets ...) agirà sul foglio attivo.
Ciao
---------------------------------------
Allora... ho ripulito e riscritto la macro e - finalmente - non ho più
problemi. Probabilmente c'era qualche "segno" sbagliato, chissà.
Ti ringrazio per la pazienza e la costanza che hai avuto nel seguirmi.
Alla prossima. Ancora grazie. A.R.
Paolo
2009-02-20 17:43:02 UTC
Permalink
Post by A.R.
Allora... ho ripulito e riscritto la macro e - finalmente - non ho più
problemi. Probabilmente c'era qualche "segno" sbagliato, chissà.
Ti ringrazio per la pazienza e la costanza che hai avuto nel seguirmi.
Alla prossima. Ancora grazie. A.R.
Figurati.
Caio.

Loading...