Den här artikeln visar hur du använder VBA för att hitta ett värde i en kolumn.
Vi kan använda Range.Find för att gå igenom en kolumn med värden i VBA för att hitta alla celler i intervallet som matchar de angivna kriterierna.
Looping genom en kolumn med Range.Find och Range.FindNext
I exemplet nedan går vi igenom data i kolumnen och letar efter ordet "Försenad". När den hittar ordet markerar den cellen genom att ändra celltextens färg till röd. Det kommer då att använda oss av Range.FindNext -metoden för att gå vidare till nästa cell och fortsätta leta efter ordet och fortsätta slingan till slutet av det angivna cellområdet.
1234567891011121314151617 | Sub FindLoop ()Dim strFirstAddress As StringDim rngFindValue As RangeDim rngSearch As RangeDim rngFind As RangeStäll in rngFind = ActiveSheet.Range ("F1: F17")Ange rngSearch = rngFind.Cells (rngFind.Cells.Count)Ange rngFindValue = rngFind.Find ("Försenad", rngSearch, xlValues)Om inte rngFindValue är ingenting dåstrFirstAddress = rngFindValue.AddressrngFindValue.Font.Color = vbRedDoAnge rngFindValue = rngFind.FindNext (rngFindValue)rngFindValue.Font.Color = vbRedLoop Till rngFindValue.Address = strFirstAddressAvsluta omAvsluta Sub |
När koden körs sparar den adressen till den första cellen där data finns i variabeln strFirstAddress och ändrar textens färg till röd. En slinga skapas sedan för att hitta nästa cell som innehåller nödvändig data. När värdet hittas ändras textens färg till röd och sedan jämförs adressen till cellen där värdet hittas med strängen strFirstAddress. Om dessa inte är desamma fortsätter slingan och hittar varje förekomst av ordet "Försenad". När slingan når slutet av cellintervallet (dvs F17) startar den tillbaka i början av intervallet (F1) och fortsätter att slinga. När den når celladressen F3 för andra gången, eftersom den är densamma som den lagrade variabeln strFirstAddress, slingan stannar.