Trova metodo dell’oggetto Range
In questo articolo, useremo 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 il nome della società, l’ID del dipendente e il nome del dipendente. Abbiamo dati grezzi da diverse società.
In questo esempio, vogliamo trovare ed evidenziare la cella che corrisponde al particolare nome dell’azienda definito nella cella I8.
Per evidenziare le celle con particolari nomi di società, immettere il nome della società nella cella I8 e fare clic sul pulsante “Invia”. Al pulsante “Invia” viene assegnata la macro “HighlightMatchingResult”.
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 cercato.
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 (MatchingRange)
Il codice sopra viene utilizzato per trovare la cella successiva che contiene un valore simile a FindItem.
Segui sotto per il codice
Option Explicit Function FindRange(FindItem As Variant, SearchRange As Range) As Range 'Declaring variables Dim MatchingRange As Range Dim FirstAddress As String With SearchRange 'Finding the range whose value match with FindItem Set MatchingRange = .Find(What:=FindItem) 'Checking whether any match exist If Not MatchingRange Is Nothing Then Set FindRange = MatchingRange 'Getting the address of first matching range FirstAddress = MatchingRange.Address Do 'Union of all the ranges whose value match with FindItem Set FindRange = Union(FindRange, MatchingRange) 'Finding the next range whose value match with FindItem Set MatchingRange = .FindNext(MatchingRange) Loop While MatchingRange.Address <> FirstAddress End If End With End Function Sub HighlightMatchingResult() 'Declaring variables Dim MappingRange As Range Dim UserInput As String 'Getting value input by user from cell I8 UserInput = Range("I8").Value 'Calling FindRange custom function Set MappingRange = FindRange(UserInput, ActiveSheet.Columns("A")) 'Highlighting the mapped range with Yellow color MappingRange.Interior.Color = RGB(255, 255, 0) End Sub
Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook e Facebook.
Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]