Excel Content condizionale / formattazione per la stampa vs. schermo e di interruzioni di pagina
-
19-09-2019 - |
Domanda
Ho un macro pubblicazione VBA in Excel che genera una cartella di lavoro pubblicato sulla base di un foglio di lavoro di configurazione master e un certo numero di fogli di lavoro con i dati. La versione pubblicata è dati direttamente, ancora formattati, ma con formule e con certe note e informazioni di base soppressi. In sostanza, la configurazione master contiene una tabella di nomi di foglio di lavoro e varia da pubblicare.
Per rendere la versione pubblicata stampabile, alcuni dei fogli di lavoro hanno bisogno di interruzioni di pagina inseriti. Mi rendo conto che posso inserire questi in base alla stessa configurazione, e posso anche cambiare l'orientamento della stampa e dei margini di un particolare foglio di lavoro, con l'aggiunta di un paio di colonne per il mio foglio padrone.
Ecco che arriva il po 'complicato. Se una tabella ha alcune di queste interruzioni di pagina inserite durante il processo di pubblicazione, desidero una riga informativo da inserire prima l'interruzione di pagina che indica che la tavola continua alla pagina successiva. Ma io voglio solo questo di presentarsi nella versione stampata, non visualizzato sul display sullo schermo.
C'è un modo per fare questo?
Soluzione
In primo luogo, inserire una riga e nasconderlo poco prima l'interruzione di pagina. Quindi, è possibile utilizzare il BeforePrint
evento sulla cartella di lavoro per trovare tutti righe con il testo "vedere la pagina successiva" in esso, e poi li Scopri.
Sub Workbook_BeforePrint(cancel as Boolean)
Dim rngCell as Range
set rngCell = ActiveSheet.UsedRange.Find("See Next Page")
while not rngCell is Nothing
if not rngCell is Nothing then
rngCell.EntireRow.Hidden = false
end if
set rngCell = ActiveSheet.UsedRange.FindNext()
loop
End Sub
Questo ti porterà un po 'eri devi andare, tuttavia, che vi lascerà sensibili alla questione del fatto che non c'è AfterPrint
. Allora, che cosa si può fare è il seguente:
Sub Workbook_BeforePrint(cancel as Boolean)
Application.EnableEvents = false
'Unhide rows here
if cancel then
Workbook.PrintPreview()
else
Workbook.PrintOut()
end if
'Rehide rows here
Application.EnableEvents = True
End Sub
Si noti che cancel
sarà essenzialmente dirvi se è un anteprima di stampa o un comando di stampa vera e propria. La sua stessa tipo di esso, credo.