In questo articolo, utilizzeremo il metodo find dell'oggetto Range per evidenziare la cella che contiene il valore simile alle parole di ricerca.
I dati grezzi per questo esempio sono costituiti dal nome dell'azienda, dall'ID del dipendente e dal nome del dipendente. Abbiamo dati grezzi di diverse società.
In questo esempio, vogliamo trovare ed evidenziare la cella che corrisponde a un particolare nome dell'azienda definito nella cella I8.
Per evidenziare le celle con particolari nomi di società, inserire il nome della società nella cella I8 e fare clic sul pulsante "Invia". Al pulsante "Invia" è assegnata la macro "EvidenziaMatchingResult".
La macro "HighlightMatchingResult" evidenzierà la cella che contiene il nome dell'azienda corrispondente con il colore Giallo.
Spiegazione logica
In questo esempio, abbiamo creato una funzione personalizzata "FindRange" e una macro "HighlightMatchingResult".
La funzione personalizzata "FindRange" creerà un intervallo con tutte le celle che contengono un valore simile al nome dell'azienda cercata.
La macro "HighlightMatchingResult" chiamerà la funzione personalizzata ed evidenzierà l'intervallo restituito dalla funzione personalizzata in colore giallo.
Spiegazione del codice
SearchRange.Find(Cosa:=FindItem)
Il codice sopra viene utilizzato per trovare la cella che contiene un valore simile a FindItem.
Union(FindRange, MatchingRange)
Il codice sopra viene utilizzato per combinare due intervalli in un unico intervallo.
SearchRange.FindNext(Gamma di corrispondenza)
Il codice sopra viene utilizzato per trovare la cella successiva che contiene un valore simile a FindItem.
Si prega di seguire sotto per il codice
Opzione Funzione esplicita FindRange(FindItem As Variant, SearchRange As Range) As Range 'Dichiarazione delle variabili Dim MatchingRange As Range Dim FirstAddress As String With SearchRange 'Trovare l'intervallo il cui valore corrisponde a FindItem Set MatchingRange = .Find(What:=FindItem) 'Checking se esiste una corrispondenza If Not MatchingRange Is Nothing Then Set FindRange = MatchingRange 'Ottenere l'indirizzo del primo intervallo corrispondente FirstAddress = MatchingRange.Address Do 'Unire tutti gli intervalli il cui valore corrisponde a FindItem Set FindRange = Union(FindRange, MatchingRange) 'Finding l'intervallo successivo il cui valore corrisponde a FindItem Set MatchingRange = .FindNext(MatchingRange) Loop While MatchingRange.Address FirstAddress End If End With End Function Sub HighlightMatchingResult() 'Dichiarazione delle variabili Dim MappingRange As Range Dim UserInput As String 'Ottenimento del valore inserito dall'utente da cell I8 UserInput = Range("I8").Value 'Chiamata della funzione personalizzata FindRange Imposta MappingRange = FindRange(UserInput, ActiveSheet.C olumns("A")) 'Evidenziando l'intervallo mappato con il colore Giallo MappingRange.Interior.Color = RGB(255, 255, 0) End Sub
Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook. Inoltre, puoi seguirci su Twitter e Facebook.
Ci piacerebbe avere tue notizie, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici al sito di posta elettronica