Sviluppare funzionalita su Microsoft Office con VBA Eliminare tutte le righe in tutti i fogli

Login Registrati
Stai vedendo 17 articoli - dal 1 a 17 (di 17 totali)
  • Autore
    Articoli
  • #44659 Score: 0 | Risposta

    FROST220684
    Partecipante

      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 Sub

      Qui è 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

      #44660 Score: 0 | Risposta

      alexps81
      Moderatore
        58 pts

        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 Sub
        #44661 Score: 0 | Risposta

        FROST220684
        Partecipante

          Ciao Alex,

          mi da errore in questo punto...ti allego foto

          Allegati:
          You must be logged in to view attached files.
          #44663 Score: 0 | Risposta

          alexps81
          Moderatore
            58 pts

            Prova a passare il mouse sulla variabile ur e vedi che numero esce?

            #44664 Score: 0 | Risposta

            FROST220684
            Partecipante

              ur = 1

              #44665 Score: 0 | Risposta

              alexps81
              Moderatore
                58 pts

                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.

                #44666 Score: 0 | Risposta

                FROST220684
                Partecipante

                  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.
                  #44668 Score: 0 | Risposta

                  alexps81
                  Moderatore
                    58 pts

                    FROST220684 ha scritto:

                    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....

                    #44669 Score: 0 | Risposta

                    FROST220684
                    Partecipante

                      alexps81 ha scritto:

                      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 Sub
                      
                      #44673 Score: 0 | Risposta

                      alexps81
                      Moderatore
                        58 pts

                        Ehh...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.

                        #44674 Score: 0 | Risposta

                        FROST220684
                        Partecipante

                          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

                          #44675 Score: 0 | Risposta

                          alexps81
                          Moderatore
                            58 pts

                            Scusami ma quand'è che ur si valorizza?

                            ur = sh.Cells(Rows.Count, "A").End(xlUp).Row

                            Dopo che valorizzi ur puoi valutare quanto misura...dopo di ché applichi la condizione se è > di 3 allora....

                            #44676 Score: 0 | Risposta

                            FROST220684
                            Partecipante
                              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 Sub
                              

                              anche cosi avevo provato in realtà ma va in debug    

                              ho provato ad inserire anche solo ur = sh.Cells(Rows.Count, "A"), ma niente

                               

                              #44678 Score: 0 | Risposta

                              alexps81
                              Moderatore
                                58 pts

                                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 then

                                 se 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 Sub
                                

                                come vedi scopro prima quanto vale ur, poi valuto se è maggiore di 3 allora cancella righe, altrimenti passa al prossimo foglio.

                                #44681 Score: 0 | Risposta

                                FROST220684
                                Partecipante

                                  alexps81 ha scritto:

                                  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

                                  alexps81 ha scritto:

                                  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

                                  Ordinamento Automatico Righe

                                  me la dai una mano???   

                                   

                                  #44682 Score: 0 | Risposta

                                  alexps81
                                  Moderatore
                                    58 pts

                                    FROST220684 ha scritto:

                                    taggo come risolto funziona tutto

                                    Ottimo!   

                                    FROST220684 ha scritto:

                                    C'è un altro post per lo stesso file

                                    Appena riesco prova a dare uno sguardo.

                                    #44683 Score: 0 | Risposta

                                    FROST220684
                                    Partecipante

                                      grazie milleeeeeeee

                                    Login Registrati
                                    Stai vedendo 17 articoli - dal 1 a 17 (di 17 totali)
                                    Rispondi a: Eliminare tutte le righe in tutti i fogli
                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                    Le tue informazioni: