Denne artikel vil vise, hvordan du bruger VBA til at finde en værdi i en kolonne.
Vi kan bruge Range.Find til at gå gennem en kolonne med værdier i VBA for at finde alle cellerne i området, der matcher de angivne kriterier.
Looping gennem en kolonne med Range.Find og Range.FindNext
I eksemplet herunder går vi gennem dataene i kolonnen og leder efter ordet "forsinket". Når det finder ordet, markerer det cellen ved at ændre celletekstens farve til rød. Det vil derefter os Range.FindNext -metoden til at gå videre til den næste celle og fortsætte med at lede efter ordet og fortsætte sløjfen indtil slutningen af det angivne celleområde.
1234567891011121314151617 | Sub FindLoop ()Dim strFirstAddress As StringDim rngFindValue As RangeDim rngSøg som områdeDim rngFind As RangeIndstil rngFind = ActiveSheet.Range ("F1: F17")Indstil rngSearch = rngFind.Cells (rngFind.Cells.Count)Indstil rngFindValue = rngFind.Find ("Overdue", rngSearch, xlValues)Hvis ikke rngFindValue er intetstrFirstAddress = rngFindValue.AddressrngFindValue.Font.Color = vbRedGørIndstil rngFindValue = rngFind.FindNext (rngFindValue)rngFindValue.Font.Color = vbRedLoop indtil rngFindValue.Address = strFirstAddressAfslut HvisAfslut Sub |
Når koden kører, gemmer den adressen på den første celle, hvor dataene findes i variablen strFirstAddress og ændrer tekstens farve til rød. En sløjfe oprettes derefter for at finde den næste celle, der indeholder de nødvendige data. Når værdien er fundet, ændres tekstens farve til rød, og adressen på cellen, hvor værdien findes, sammenlignes med strengen strFirstAddress. Hvis disse ikke er de samme, fortsætter sløjfen og finder hver forekomst af ordet "forsinket". Når sløjfen når enden af celleområdet (dvs. F17), starter den tilbage i begyndelsen af intervallet (F1) og fortsætter med at løkke. Når den når celleadressen F3 for anden gang, da den er den samme som den lagrede variabel strFirstAddress, sløjfen stopper.