VBA Vind waarde in kolom

Dit artikel laat zien hoe u VBA kunt gebruiken om een ​​waarde in een kolom te vinden.

We kunnen Range.Find gebruiken om door een kolom met waarden in VBA te lopen om alle cellen in het bereik te vinden die voldoen aan de opgegeven criteria.

Loop door een kolom met Range.Find en Range.FindNext

In het onderstaande voorbeeld doorlopen we de gegevens in de kolom en zoeken we naar het woord 'Te laat'. Wanneer het het woord vindt, markeert het de cel door de kleur van de celtekst in rood te veranderen. Het zal dan de Range.FindNext-methode gebruiken om naar de volgende cel te gaan en verder te zoeken naar het woord, waarbij de lus wordt voortgezet tot het einde van het opgegeven cellenbereik.

1234567891011121314151617 Sub FindLoop()Dim strFirstAddress As StringDim rngFindValue As RangeDim rngZoeken als bereikDim rngZoeken als bereikStel rngFind = ActiveSheet.Range ("F1:F17") inStel rngSearch = rngFind.Cells(rngFind.Cells.Count) inStel rngFindValue = rngFind.Find("Te laat", rngSearch, xlValues)Als niet rngFindValue niets is, danstrFirstAddress = rngFindValue.AddressrngFindValue.Font.Color = vbRedDoenStel rngFindValue = rngFind.FindNext(rngFindValue) inrngFindValue.Font.Color = vbRedLoop tot rngFindValue.Address = strFirstAddressStop alsEinde sub

Wanneer de code wordt uitgevoerd, wordt het adres opgeslagen van de eerste cel waar de gegevens in de variabele worden gevonden strEersteAdres en verandert de kleur van de tekst in rood. Er wordt dan een lus gemaakt om de volgende cel te vinden die de vereiste gegevens bevat. Wanneer de waarde is gevonden, wordt de kleur van de tekst gewijzigd in rood en wordt het adres van de cel waar de waarde is gevonden vergeleken met de tekenreeks strEersteAdres. Als deze niet hetzelfde zijn, gaat de lus verder en vindt elke instantie van het woord "Te laat". Zodra de lus het einde van het bereik van cellen bereikt (dwz F17), begint het terug bij het begin van het bereik (F1) en gaat verder met de lus. Zodra het het celadres F3 voor de tweede keer bereikt, omdat het hetzelfde is als de opgeslagen variabele strEersteAdres, stopt de lus.

wave wave wave wave wave