Vi posto questo codice d'esempio:
codice:
' Printers(2) è la mia stampante predefinita
Set Printer = Printers(2)
Printer.ScaleMode = vbCentimeters
For i = 1 To 3
Printer.ScaleLeft = -2 - i ' Margine sinistro
Printer.ScaleTop = -4 - i ' Margine superiore
Printer.Print ""
Printer.Print "ScaleLeft: " & CStr(-2 - i)
Printer.Print "ScaleTop: " & CStr(-4 - i)
Printer.NewPage
Next i
Printer.EndDoc
Con questo codice io mi aspetterei di avere stampate tre pagine rispettivamente con le scritte:
[Pag 1]
ScaleLeft: -3
ScaleTop: -5
[Pag 2]
ScaleLeft: -4
ScaleTop: -6
[Pag 3]
ScaleLeft: -5
ScaleTop: -7
Con i margini impostati nelle rispettive modalità.
Mi accorgo invece che come margine superiore (ScaleTop) mi viene mantenuto quello impostato per la pagina precedente!!!
In pratica nella prima pagina che stampo non c'è nessun margine superiore, nella seconda ci sono 5cm e nella terza 6cm.
Se poi lancio la stampa di nuovo, la prima pagina ha 7cm di margine superiore (l'ultimo margine impostato nella 3 pagina della stampa precedente), la seconda pagina ha sempre 5cm e la terza sempre 6cm e finché non chiudo Visual Basic il giro continuerà così!
Il margine sinistro è invece sempre corretto!
Sono io che sbaglio qualcosa?