› Sviluppare funzionalita su Microsoft Office con VBA › elimina celle con determinato testo
-
AutoreArticoli
-
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.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?
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.
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".
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?
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
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 SubGrazie alexps81.
Ora vedo di adattarlo ad un workbook che sto modificando.
Grazie ancora
-
AutoreArticoli
