Prima di tutto vorrei ringraziarti, veloce e perfetto!.
E vero, prima ho messo tutta la domanda nel titolo, poi mi è sembrata troppo lunga e l'ho rimpiazzata per "aiuto", poi ho spiegato il mio problema abbastanza male, della serie "tanto non mi risponderà nessuno", ma vedo che hai capito benissimo perche il
codice è perfetto.
Aproffito ancora a farti una domanda riguardante il codice, prima premetto che ho rimpiazzato i valori delle colonne, al posto delle "A" o mezzo "H", e al posto della "B", la "F", perche queste sono le colonne del mio foglio, poi il valore da cercare era
"*". Specifico questo perche magari incide nella eventuale risposta, alla domanda che sto per formulare.
Come posso delimitare il range delle colonne, ad esempio da H5 ad H4300, e cosi per le altre due?, perche ho notato, e comunque va bene lo stesso, che ci mette qualche secondo in più, secondo me per via del fatto che la ricerca la fa su tutta la colonna
del foglio, e a me alla fine serve soltanto che lo faccia in quel range. Sono argentino, scusa gli errori di ortografia, Ti ringrazio ancora!!
Il Range è già limitato. In pratica la macro trova l'ultima cella della colonna A (o H come l'hai modificata tu) e considera solo quelle celle. E' lenta perchè se hai oltre 4000 celle ci vuole il giusto tempo.
Prova questa:
Public Sub m()
Dim lRiga As Long
Dim rng As Range
Dim c As Range
Dim rCancella As Range
Dim sh As Worksheet
On Error Resume Next
Application.ScreenUpdating = False
Set sh = ThisWorkbook.Worksheets("Foglio1")
With sh
lRiga = .Range("H" & .Rows.Count).End(xlUp).Row
Set rng = .Range("H4:H" & lRiga)
rng.AutoFilter Field:=1, Criteria1:="abc"
Set rCancella = rng.SpecialCells(xlCellTypeVisible)
For Each c In rCancella
c.Offset(0, -2).Value = ""
Next
rng.AutoFilter
End With
Application.ScreenUpdating = True
Set rng = Nothing
Set rCancella = Nothing
Set c = Nothing
Set sh = Nothing
End Sub