› Sviluppare funzionalita su Microsoft Office con VBA › Eliminare tutte le righe in tutti i fogli
-
AutoreArticoli
-
Ciao a tutti,
Devo eliminare tutte le righe, in tutti i fogli presenti dalla numero 4 all'ultima riga compilata. Per intenderci funziona come un reset, in questi fogli inserisco varie righe sempre a partire dalla numero 4, quando poi voglio resettare il foglio in modo che non ci siano più righe ed io possa ricominciare dall'inizio utilizzerei la macro per portare i fogli di excel allo stato origine (cioè senza righe inserite). ho necessità di saltare un solo foglio. ho provato con il registratore ma chiaramente mi indica una serie di righe che io ho selezionato ma immagino si possa indicare tramite un ciclo For di farlo in tutti i fogli ed indicando l'ultima riga compilata (cioè quando trova una riga vuota passa al foglio successivo.
Sub Macro1() Sheets("Ingressi Spa Free").Select Rows("4:11").Select Selection.Delete Shift:=xlUp End SubQui è il codice per un solo foglio e per alcune righe selezionate, come posso adattarlo a tutti i fogli ed eliminare tutte le righe dalla quarta in poi fino all'ultima compilata o appena trova una cella/riga vuota?
Grazie a tutti
Questo codice va a scandagliare foglio per foglio, saltando quello nominato "Foglio3", e cancella dal rigo 4 fino al rigo compilato del Foglio passato in rassegna, tenendo conto che le celle nella colonna "A" sono quelle da determinare dove l'ultimo rigo è compilato.
Sub Elimina_dal_rigo_nr_4() Dim sh As Worksheet Dim ur As Long For Each sh In ThisWorkbook.Worksheets If sh.Name <> "Foglio3" Then sh.Activate ur = sh.Cells(Rows.Count, "A").End(xlUp).Row Rows("4:" & ur).Delete End If Next sh End SubCiao Alex,
mi da errore in questo punto...ti allego foto
Allegati:
You must be logged in to view attached files.Prova a passare il mouse sulla variabile ur e vedi che numero esce?
ur = 1
Ehh...quindi vuol dire che il foglio passato in rassegna ha nella colonna "A" celle vuote. C'è un'altra colonna a cui puoi appoggiarti? Cioè che ha celle non vuote. Ovviamente tutti i fogli devono far capo a questa colonna.
Non è cosi nel senso che nella colonna A ci sono sempre numeri, ma anche cambiando nella colonna B, ci sono sempre date. e' possibile che qualche foglio non abbia righe compilate ma dovrebbe saltarlo. Ti mando cmq il file che utilizzo con la macro copiata cosi puoi vedere meglio
Allegati:
You must be logged in to view attached files.e' possibile che qualche foglio non abbia righe compilate ma dovrebbe saltarlo.
Si può essere che ci sono fogli con celle vuote nella colonna A. Ora non riesco a controllare il file allegato perché sono sprovvisto di PC. Caso mai metti una verifica ulteriore sulla variabile ur, in cui dichiari che se ur è > di 3 allora prosegui....
Caso mai metti una verifica ulteriore sulla variabile ur, in cui dichiari che se ur è > di 3 allora prosegui....
e come si fa?
ho provato cosi ma non va
Sub Elimina_dal_rigo_nr_4() Dim sh As Worksheet Dim ur As Long For Each sh In ThisWorkbook.Worksheets If sh.Name <> "Foglio1" Then If ur > 3 Then sh.Activate ur = sh.Cells(Rows.Count, "A").End(xlUp).Row Rows("4:" & ur).Delete End If End If Next sh End SubEhh...scusami ma come fa il compilatore a capire se ur è> di 3 se prima non la rileva? Ci sei quasi...rivedi il codice che hai modificato.
ho fatto un po di prove ma con pessimi risultati anche perchè a dir la verità non saprei come fargli rilevare ur
ho provato con ur = 3
oppure
ur = sh.Cells(4, "A")
ma sicuramente sbaglio per ignoranza
Scusami ma quand'è che ur si valorizza?
ur = sh.Cells(Rows.Count, "A").End(xlUp).RowDopo che valorizzi ur puoi valutare quanto misura...dopo di ché applichi la condizione se è > di 3 allora....
Sub Elimina_dal_rigo_nr_4() Dim sh As Worksheet Dim ur As Long For Each sh In ThisWorkbook.Worksheets ur = sh.Cells(Rows.Count, "A").End(xlUp).Row If ur > 3 Then If sh.Name <> "Foglio11" Then sh.Activate ur = sh.Cells(Rows.Count, "A").End(xlUp).Row Rows("4:" & ur).Delete End If End If Next sh End Subanche cosi avevo provato in realtà ma va in debug
ho provato ad inserire anche solo ur = sh.Cells(Rows.Count, "A"), ma niente
Sono riuscito a dare uno sguardo al tuo file allegato. Innanzitutto non c'è nessun foglio nominato "Fogli1". Forse vuoi saltare il foglio chiamato "Pannello di Controllo"?
Poi cercavo di spiegarti che quando lanci la Sub, la variabile ur chiaramente vale 0 (zero).
Se tu vuoi che si cancellano le righe dalla 4 fino alla riga ur (UltimaRiga compilata del foglio)...devi prima scoprire qual è l'ultima riga...giusto?
Non puoi scrivere
If ur > 3 thense prima non sai quanto vale...perciò sarà:
Option Explicit Sub Elimina_dal_rigo_nr_4() Dim sh As Worksheet Dim ur As Long For Each sh In ThisWorkbook.Worksheets If sh.Name <> "Pannello di Controllo" Then sh.Activate ur = sh.Cells(Rows.Count, "A").End(xlUp).Row If ur > 3 Then Rows("4:" & ur).Delete End If End If Next sh End Subcome vedi scopro prima quanto vale ur, poi valuto se è maggiore di 3 allora cancella righe, altrimenti passa al prossimo foglio.
Sono riuscito a dare uno sguardo al tuo file allegato. Innanzitutto non c'è nessun foglio nominato "Fogli1". Forse vuoi saltare il foglio chiamato "Pannello di Controllo"?
si effettivamente pensavo di doverlo chiamare come il numero di foglio generico e non come il nome del foglio
Poi cercavo di spiegarti che quando lanci la Sub, la variabile ur chiaramente vale 0 (zero).
Se tu vuoi che si cancellano le righe dalla 4 fino alla riga ur (UltimaRiga compilata del foglio)...devi prima scoprire qual è l'ultima riga...giusto?
Ma guarda io apprezzo tantissimo i tuoi sforzi nel senso che io cerco sempre di capire quello che facciamo, ti faccio un esempio quando mi ha spiegato il funzionamento dell'Array ho creato un codice che all'apertura del foglio mi fa una sorta di backup formule dei fogli per qualsiasi necessità e prima non sapevo nemmeno cosa fosse l'Array. Il vba è affascinante almeno per me, solo che io sono davvero un principiante riesco in qualche modo a guardare i codici e capire alcune cose ma purtroppo mi perdo su altre. Ma c'è sempre da imparare ed io di questo sono molto contento
taggo come risolto funziona tutto
Grazie mille
C'è un altro post per lo stesso file
me la dai una mano???
taggo come risolto funziona tutto
Ottimo!
C'è un altro post per lo stesso file
Appena riesco prova a dare uno sguardo.
grazie milleeeeeeee
-
AutoreArticoli
