Sviluppare funzionalita su Microsoft Office con VBA elimina celle con determinato testo

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

    frank_ciccio
    Partecipante
      3 pts

      Ciao a tutti.

      Nel workbook allegato c'è una macro per eliminare le celle doppie E:H se in cella F c'è un doppione come la cella precedente.

      Clicca ne pulsante giallo e si cancellano le ultime celle E:H.

      Chiedo una modifica per eliminare sempre per lo stesso range E:H una riga che contiene un determinato testo "prova avvio" e non più un doppione.

      Spero di essermi spiegato

       

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

      alexps81
      Moderatore
        58 pts

        Ciao @frank_ciccio,

        a parte la "strana" macro che hai nel file allegato per ottenere il medesimo risultato...non sono chiari alcuni punti della tua richiesta.

        Vediamo se ho capito: tu vorresti una nuova macro oltre a quella già presente, che cancelli l'intervallo di celle "E:H" se in colonna "F" è presente la dicitura "PROVA AVVIO"? Oppure una implementazione della macro già esistente che faccia sia l'una che l'altra azione?

        Ad esempio, in "F28" hai "PROVA AVVIO", a questo punto il range "E28:H28" deve cancellarsi? Ma poi la stessa scritta è presente in "F23", "F19" ed "F15", anche questi range bisogna cancellare il contenuto oppure deve interrompersi alla prima occorrenza?

        Ad ogni modo nella tua richiesta parli anche di riga. Devi eliminare la riga intera o cancellare solo il contenuto del range interessato? Inoltre bisogna rispettare il testo maiuscolo o è indifferente?

        #54984 Score: 0 | Risposta

        frank_ciccio
        Partecipante
          3 pts

          Ciao alexps81.

          La macro allegata era un esempio.

          La nuova macro deve eliminare solo il range interessato F:H (come la macro allegata) dove presente in F "PROVA AVVIO".

          Se presente in altre celle F deve eliminare anche queste.

          Se presente in altre celle F oltre all'ultima riga poi la macro non deve lasciare spazi vuoti.

          In colonna G ci sono formule e devono continuare a funzionare.

          #54985 Score: 0 | Risposta

          alexps81
          Moderatore
            58 pts

            frank_ciccio ha scritto:

            La nuova macro deve eliminare solo il range interessato F:H (come la macro allegata)

            La macro allegata come esempio cancella il range "E:H" ma tu ora parli di "F:H".

            frank_ciccio ha scritto:

            la macro non deve lasciare spazi vuoti.

            Allora non deve cancellare il contenuto del range ma la riga intera...giusto? Per intenderci le righe 15, 16, 19, 23 e 28 devo essere eliminate?

            #54986 Score: 0 | Risposta

            frank_ciccio
            Partecipante
              3 pts

              Ops errore battitura è E:H

              Deve cancellare la riga E:H ma solo per queste.

              In poche parole nel range E:H non deve esserci spazi vuoti.

              Non deve cancellare gli altri range

              #54987 Score: 0 | Risposta

              alexps81
              Moderatore
                58 pts

                Ma secondo me ti stai confondendo. Non deve essere cancellato il contenuto del range "E:H" dove in "F" è riportato "PROVA AVVIO" bensì deve essere eliminata la riga intera. Attenzione...eliminare e cancellare non è la stessa cosa.

                Il punto è che le formule nelle colonne da "A" a "D"; "G" e da "I" a "T" sono imprecise. Se andiamo ad eliminare la riga, i riferimenti poi "saltano".

                Modifica il foglio "home" così:

                sostituisci da "A11" a "D55" con questo =RIF.RIGA()-9

                stessa cosa da "I11" a "T55" sempre con questo =RIF.RIGA()-9

                Invece da "G11" metti questo =SE(E11="";"";RIF.RIGA()*2) e trascini fino a "G55"

                Dopo fatto tutto questo prova questa macro:

                Sub cancella()
                    Dim wsHome As Worksheet
                    Dim r As Long, i As Long
                    
                    If MsgBox("Vuoi eliminare le righe dove in colonna ""F"" contiene la parola:" & _
                            String(2, vbCrLf) & "PROVA AVVIO?", vbQuestion + vbYesNo, "Elimina righe") = vbNo Then Exit Sub
                            
                    Set wsHome = ThisWorkbook.Worksheets("home")
                    
                    With wsHome
                        .Unprotect
                        r = .Cells(.Rows.Count, "F").End(xlUp).Row
                        
                        If r < 10 Then Exit Sub
                        
                        For i = r To 10 Step -1
                            If Trim(.Cells(i, "F").Value) <> "" Then
                                If UCase(.Cells(i, "F").Value) = "PROVA AVVIO" Then
                                    .Rows(i).EntireRow.Delete
                                End If
                            End If
                        Next i
                        '.Protect
                    End With
                End Sub
                #54988 Score: 0 | Risposta

                frank_ciccio
                Partecipante
                  3 pts

                  Grazie alexps81.

                  Ora vedo di adattarlo ad un workbook che sto modificando.

                  Grazie ancora

                Login Registrati
                Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)
                Rispondi a: elimina celle con determinato testo
                Gli allegati sono permessi solo ad utenti REGISTRATI
                Le tue informazioni: