Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Carlo,
Buongiorno, problema con Excel 2003. Premetto che non conosco il linguaggio VBA.
Ho un foglio che ho chiamato "Gennaio" (seguiranno chiaramente anche quelli con i mesi successivi con le medesime caratteristiche) con le intestazioni di campo "PERSONALE", "CAUSALE", "DATA INIZIO", "ORA INIZIO", "DATA FINE", "ORA FINE", "STRAORDINARIO" (campo calcolato che fa la differenza dei campi data/ora); tutto ciò partendo dalla cella A2 e per l'inserimento max di 200 records (comunque variabili).
Chi inserisce i records può avere la necessità, nel corso del mese, di cancellarne o aggiungerne per cui ho impostato una macro che mi ordina i campi per personale e per data d'inizio.
Parte di questi campi ( "PERSONALE", "CAUSALE", "DATA INIZIO", "ORA INIZIO", "STRAORDINARIO") sono rinviati in un'altra parte del foglio (a partire dalla cella P310 fino alla colonna AQ) con la formuletta =SE($A2="";"";$A2) etc...etc..,le celle interessate vengono bordate progressivamente dalla formattazione condizionale.
Arrivo finalmente al problema: come posso gestire l'area di stampa dinamicamente? Mi spiego meglio: avrei bisogno che al momento di stampare utilizzando il solo pulsante di stampa immediata non escano pagine bianche (quelle che rendono valori uguali a ""), mantenendo comunque le funzioni all'interno delle singole celle (questo perché come accennavo sopra la stampa può variare diverse volte nel corso del mese accorciandosi o allungandosi) considerando anche che le righe dalla 301 alla 309 sono da ripetere all'inizio di ogni pagina che contiene valori <>"".
Mi piacerebbe anche che al momento della stampa comparisse un msgbox in cui inserire il numero di copie.
Il foglio verrà protetto da pw.
Ho provato diverse soluzioni trovate su Internet ma non sono riuscito (per la mia ignoranza cosmica in VBA!) ad adattarne nessuna alle mie esigenze.
Di primo acchito, e in assenza di un file di esempio e il tuo codice (di evento?), vorrei suggerire il seguente approccio:
- Aggiungi un colonna di appoggio ai dati nell'intervallo P310:AQn
- Nelle celle della nuova colonna immetti una formula del tipo
=MATR.SOMMA.PRODOTTO(LUNGHEZZA(P310:T310))>0
- Applica un filtro automatico, selezionando il criterium VERO per la nuova colonna
In questo modo, solo le righe che corrispondono alle righe con dati nell'intervallo A2:Gx non vuote saranno visibili e, quindi, verranno stampati.
Se fosse per me, vorrei sfruttare l'evento BeforePrint per implementare questo approccio.
Ovviamente, ci sono approcci alternativi e quindi, ad esempio, si potrebbe nacondere le righe vuote con codice oppure copiare le righe con dati su un foglio temporaneo.
De tu dovessi richiedere ulteriore assistenza per implementare un approccio simile o diverso, ti chiederei gentil mente di fornirci con un file di esempio, privo di dati sensibili
===
Regards,
Norman