Tra gli altri parametri che determinano il comportamento della dimensione celle c'e' la risoluzione della grafica dei pc, e pur avendola qualche volta misurata (vedi nell'alberello natalizio di quest'anno) non ne conosco i retroscena per capire come governarne gli impatti.
Mi sa quindi che devi passare dall'analogico al digitale…
Nel senso che contiamo la posizione dei break pagina e agiamo di conseguenza.
Avevo gia' pubblicato anni fa una macro che impostava le pagine in funzione di un obiettivo di paginazione, ma non l'ho ritrovata; mi appoggio quindi sulla piu' recente Function GimmiPage pubblicata qui:
viewtopic.php?f=26&t=109047&p=640183#p640183Poi usiamo una macro come questa per fare in modo che la cella che ci interessi sia in pag 1:
- Codice: Seleziona tutto
Sub OnePage()
Dim Filler As Long, Checker As String, cPage As Long
Dim CRH As Single, sStep As Long, dPg As Long
'
Filler = 36 '<<< La riga modificabile in altezza
Checker = "H37" '<<< La cella su cui fare la verifica
'
If GimmiPage(Range(Checker)) > 1 Then sStep = -1 Else sStep = 1: dPg = 1
Application.ScreenUpdating = False
CRH = Rows(Filler).RowHeight
For I = 1 To 100
Rows(Filler).RowHeight = CRH + I * sStep
cPage = GimmiPage(Range(Checker))
If cPage = 1 + dPg Then GoTo gOut
Next I
MsgBox ("Ricerca fallita, controlla spaziatura COLONNE")
gOut:
Rows(Filler).RowHeight = CRH + I * sStep - dPg
Application.ScreenUpdating = True
End Sub
Lancerai la Sub OnePage prima della stampa; ad esempio potresti agganciarla al tuo pulsante "adatta e mostra anteprima", facendola precedere dalla scelta della stampante:
- Codice: Seleziona tutto
Sub AdattaTutteRighe()
'scegli printer
SelPrint = Application.Dialogs(xlDialogPrinterSetup).Show
If SelPrint = False Then
MsgBox "Stampa Cancellata"
Exit Sub
End If
Call OnePage
ActiveWindow.SelectedSheets.PrintPreview
End Sub
La scelta printer in questa fase serve a essere quasi certi di lavorare sul formato di stampa corretto.
Sia la Function GimmiPage che la Sub OnePage vanno in un modulo standard del vba; le righe marcate <<< vanno personalizzate secondo la tua situazione
Ho considerato che tu hai una riga destinata (apparentemente) alla compensazione di altezza; con piccole variazioni si puo' fare in modo da lavorare su un intervallo di righe, invece che una sola riga.
Ciao