Wyszukiwanie w pętli VBA

0

Witam,

Pmoże mi ktoś zapętlić coś takiego:

If Cells.Find(What:="*KION*", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate Then
        
        
   Rows(ActiveCell.Row).Select
   With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 10092543
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End If

chodzi mi o to, żeby znaleźć wyraz KION po znalezieniu zaznaczyć wiersz i pokolorować go (nie ma znaczenia kolor idt). Powyższe działa tzn. znajduje wyraz zaznacza wiersz i koloruje go... jak zrobić żeby to szło w pętli?

Będę bardzo wdzięczny za pomoc.

Pozdrawiam

0

Cells.Find szuka po wszystkich komórkach, więc nie ma sensu wykorzystanie tu pętli. Pętla prawdopodobnie zadziała wolniej.
Jeśli jednak musisz koniecznie zrobić to w pętli (bo tak mówi zadanie na zaliczenie czy coś :P), to tu masz podane, jak pobrać wartość komórek w pętli: https://stackoverflow.com/questions/38351884/why-activesheet-cells-dont-work/38351992

A jak już masz wartość komórki, to przyrównujesz ją do "KION" i tyle.
Jeśli "KION" może być częścią wyrazu, to użyj funkcji InStr: https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/instr-function

Jeśli natomiast nie chodzi o samo użycie pętli, tylko o to, by znalazło wszystkie wystąpienia, to możesz zainteresować się funkcją FindNext: https://docs.microsoft.com/en-us/office/vba/api/excel.range.findnext
i puszczać ją w pętli Do While jak podano w przykładzie.

0

Prosta pętla, wyszukuje wyraz "KION" w komókach przy założeniu, że przeszukujemy kolumnę A. Gdybyś chciał zmienić przeszukiwany zakres, to zmień wartości w Range:

Range(Cells(1, 1), Cells(6, 1))

Gdyby wyraz "KION" miał być częścią Stringa, to:

If cell01.Value = "KION" Then

Zmień na:

If cell01.Value like "*KION*" Then

Jeżeli chcesz szukać również w formułach:

If cell01.Formula Like "*KION*" Then
Sub FindKION()
Dim cell01 As Range

For Each cell01 In Range(Cells(1, 1), Cells(6, 1))
    If cell01.Value = "KION" Then
        cell01.EntireRow.Interior.Color = RGB(127, 127, 127)
    End If
Next cell01
End Sub

Tak jak kolega wyżej napisał, taka pętla nie jest zbyt wydajnym rozwiązaniem przy większej ilości danych.

0

Formatowanie warunkowe -> Nowa reguła -> formatuj tylko komórki zawierające, z określonym tekstem
I ustawić "Formatuj"

1 użytkowników online, w tym zalogowanych: 0, gości: 1