Denne artikkelen viser hvordan du bruker VBA til å finne en verdi i en kolonne.
Vi kan bruke Range.Find for å gå gjennom en kolonne med verdier i VBA for å finne alle cellene i området som samsvarer med kriteriene som er angitt.
Sløyfe gjennom en kolonne med Range.Find og Range.FindNext
I eksemplet nedenfor går vi gjennom dataene i kolonnen og leter etter ordet "Forfalt". Når den finner ordet, vil den markere cellen ved å endre fargen på celleteksten til rød. Det vil da bruke Range.FindNext -metoden for å gå videre til den neste cellen og fortsette å lete etter ordet, og fortsette sløyfen til slutten av det angitte celleområdet.
1234567891011121314151617 | Sub FindLoop ()Dim strFirstAddress As StringDim rngFindValue As RangeDim rngSøk som områdeDim rngFind As RangeSett rngFind = ActiveSheet.Range ("F1: F17")Angi rngSearch = rngFind.Cells (rngFind.Cells.Count)Sett rngFindValue = rngFind.Find ("Overdue", rngSearch, xlValues)Hvis ikke rngFindValue er ingenting dastrFirstAddress = rngFindValue.AddressrngFindValue.Font.Color = vbRedGjøreSett rngFindValue = rngFind.FindNext (rngFindValue)rngFindValue.Font.Color = vbRedSløyfe Til rngFindValue.Address = strFirstAddressSlutt omSlutt Sub |
Når koden kjører, lagrer den adressen til den første cellen der dataene finnes i variabelen strFirstAddress og endrer fargen på teksten til rød. En sløyfe opprettes deretter for å finne den neste cellen som inneholder nødvendige data. Når verdien er funnet, endres fargen på teksten til rød og deretter blir adressen til cellen der verdien er funnet sammenlignet med strengen strFirstAddress. Hvis disse ikke er de samme, fortsetter sløyfen og finner hver forekomst av ordet "forsinket". Når sløyfen når slutten av celleområdet (dvs. F17), starter den tilbake i begynnelsen av området (F1) og fortsetter å løkke. Når den når celleadressen F3 for andre gang, da den er den samme som den lagrede variabelen strFirstAddress, sløyfen stopper.