La consultazione del forum è libera per tutti.
Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).
Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.
Ciao a tutti,
gestisco un'Associazione. Ci sono soci e iscritti alle attività. Negli anni ho "autocostruito" un file excel per "gestire" elenchi vari per la gestione. Il mio file excel è composto da circa 40 fogli. In ognuno è presente una tabella per gestire le varie attività. Negli anni ho cercato di costruire tabelle "standard" di circa 400/500 righe, a volte queste tabelle sono tutte utilizzate a volte solo un centinaio di righe. Dovendo eseguire la stampa provvedo "manualmente" a selezionare le righe "vuote" e a nasconderle da formato/riga/nascondi. E' possibile creare una macro che nasconda/scopra le righe vuote? Deve essere una macro per ogni foglio o una unica che funziona su tutti i fogli?
Grazie.
ciao
è assurdo creare delle tabelle standard con righe vuote
non servono a niente e snaturano la proprietà stessa della tabella.
se scrivo sotto l'ultima riga della tabella questa in automatico la fagocita
facendola sua.
perciò invece di impazzire con le macro
elimina le righe vuote e vedrai che ti troverai meglio.
NB
le formule della prima riga vengono riportate sulle righe aggiunte adeguandole
non mi piacciono le tabelle ma se devo lavorarci sfrutto le loro proprietà
altrimenti che me ne faccio 😆
per la macro aspettiamo i vbaisti
Ciao,
Grazie.
il file me lo sono autocostruito con le conoscenze di excel e il vostro aiuto negli anni. Ho pensato alle tabelle perchè era il modo che ho imparato, ma se hai/avete altri consigli, grazie in anticipo. Uso le tabelle perchè le "stampo" in pdf e poi le invio o appunto .... le stampo con la stampante. Non saprei in che altro modo fare questo ma, ripeto, accetto ben volentieri, i tuoi consigli. Ho appena provato con quella tabella li, prima di inviarvela: la tabella si "allunga" ma l'altezza delle righe non viene riportata: viene utilizzata, per le righe aggiunte, l'altezza standard di excel. Per semplicità ho un'altezza di 25: se aggiungo 50 righe, devo successivamente modificare l'altezza da 16 a 25.
Grazie.
Ciao
Mio consiglio personale: non usare le Tabelle, usa un intervallo.
Prova la macro seguente (in un Foglio nuovo nel quale avrai riportato i dati - MA SOLO I VALORI - di una tua tabella)
Option Explicit Sub Stampa() Dim ur As Long, nascoste 'ultima riga da visualizzare ur = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 'nascondi dalla riga successiva fino alla fine nascoste = "A" & ur + 1 & ":J555" ActiveSheet.Range(nascoste).EntireRow.Hidden = True Stop 'codice per la stampa 'scopri le righe nascoste ActiveSheet.Range(nascoste).EntireRow.Hidden = False Stop End Sub
Ho inserito due Stop per farti notare che prima nasconde le righe, esegue la stampa (inserisci il tuo codice), e infine scopre le righe precedentemente nascoste.
Ovviamente la macro è basata sui valori della colonna A che non devono contenere dati da una certa riga in giù.
Fai sapere. Ciao,
Mario
Ciao, grazie mille.
Ora provo la macro: non sono cosi esperto di macro e mi ci vuole tempo.
Nel frattempo chiedo una informazione. Non sono esperto di excel, lo uso da anni ma esclusivamente per questo scopo associativo e quindi le mie esigenze e le mie necessità si fermano qui, ma sono disponibilissimo ad accettare consigli e imparare di più di excel. Nello specifico, ho iniziato ad usare le tabelle perchè? Devo stampare elenchi e utilizzo la "lettura facilitata", inizialmente con una regola di formattazione condizionale, poi con la formattazione tabelle, poi le tabelle hanno i filtri, le formule che si copiano automaticamente, i totali sotto, ecc., il nome tabella a cui fare riferimento nei vari fogli di excel per leggere e utilizzare dati di altre tabelle. Ecco perchè ho iniziato ad usarle. Se però avete suggerimenti, meglio, ho letto di intervalli ma non l'ho mai usato. Ho acquistato anche manuali su questo forum ma ho poco tempo per dedicarmi completamente, portate pazienza. Imparo a seconda dell'esigenza.
Grazie mille.
Ciao,
premetto che di Visual Basic non sono esperto, anzi.....
Quindi la risposta è che la macro non va, ma è un mio errore. Riporto le mie azioni cosi puoi capire dove sbaglio:
- strumenti / macro / Visual Basic Editor
- nella schermata principale copia le tue istruzioni
- tolgo i due "stop" perche creano errore
- clicco su "esegui sub" nella barra degli strumenti
- non succede nulla
- ho provato a cambiare la colonna A in B che le celle della colonna A non erano vuote, ma senza risultati.
Dove sbaglio?
ciao
- strumenti / macro / Visual Basic Editor
inserisci
modulo
copia la macro
non va ancora. perchè?
ho cancellato i due stop perche li evidenza in giallo.
e poi invio. ma non va.
mi spiace.
Ciao
Potresti allegare il file che hai utilizzato con la macro inserita? Grazie.
Aggiungi qualcosa al Non va! Cosa fa? Si blocca? Non esegue quanto dovrebbe?
Ciao,
Mario
ciao
ma hai messo lo spezzone di codice per la stampa
dove ti ha segnalato Marius?
perchè io capisco che devi inserirlo
ActiveSheet.Range(nascoste).EntireRow.Hidden = True
Stop
'codice per la stampa
Ciao
L'errore sta nel fatto che hai usato una tabella mentre t'avevo detto di copiare SOLO i valori.
Se formatto in quel modo la variabile ur (ultima riga) va a prendere la riga 555
Ciao,
Mario
Ciao
Visto che vuoi usare per forza le Tabelle, atteso che le tue Tabelle siano sempre nell'intervallo A2:J555 prova con questa macro che dovrebbe fare quanto chiedi.
Sub Stampa2() Dim PrimaCella As Range, UltimaCella As Range, Tabella As Range, Esci As Boolean Esci = False With Sheets("Elenco") Set PrimaCella = .Range("A2") Set UltimaCella = Cells(.Rows.Count, PrimaCella.Column).End(xlUp).Offset(0, 9) Set Tabella = Range(PrimaCella, UltimaCella) End With For i = 1 To Tabella.Rows.Count Set Record = Tabella.Rows(i) For j = 1 To Record.Cells.Count Set cella = Record.Cells(j) 'cella.Select If cella.Value = "" Then nascoste = cella.Address & ":J555" ActiveSheet.Range(nascoste).EntireRow.Hidden = True Stop 'codice per la stampa ActiveSheet.Range(nascoste).EntireRow.Hidden = False Esci = True Exit For End If Next j If Esci Then Exit For End If Next i Set PrimaCella = Nothing Set UltimaCella = Nothing Set Tabella = Nothing Set Record = Nothing End Sub
Coem al solito ho messo uno Stop per farti notare in quale punto nasconde le righe.
Fai sapere. Ciao,
Mario
grazie.
hai ragione, era il motivo per cui ti chiedevo dove sbaglio..... e dire che avevo letto le tue istruzioni. Porta pazienza.
Ora ho rifatto: nuovo file, nuovo salvataggio e nuova macro. ma non va ancora. Cancello i due stop perchè esce l'evidenziazione gialla e poi non appare nulla e la stampante non parte.
Grazie.
Ciao
Hai provato la nuova macro che "dovrebbe" funzionare con le Tabelle? Fai sapere.
Ciao,
Mario