Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

VBA - Petla dla makra z funkcją if

mmario33 17 Lip 2016 10:00 1221 5
  • #1 17 Lip 2016 10:00
    mmario33
    Poziom 8  

    Witam
    Mam takie proste makro które sprawdza czy w komórce G jest wpisane BBBB jeśli tak to komórkę I koloruje na zielono jeśli nie to koloruje na niebiesko

    kod wygląda tak
    Sub Makro1()
    If Range("G6") = "BBBB" Then

    Range("I6").Interior.ColorIndex = 4
    Else

    Range("I6").Interior.ColorIndex = 5

    End If

    End Sub

    Tabelka tak :
    BBBB 12 20
    BBBB 12 20
    BBBB 12 20
    BBBB 12 20
    AAAA 14 18
    AAAA 14 18
    AAAA 14 18
    AAAA 14 18
    AAAA 14 18


    Teraz moje pytanie jak zrobić ,żeby makro przeszukiwało po kolei wiersz i robilo dokładnie to co moja funkcja if? W sensie żeby nie musiał kopiować mojej funkcji dla każdego wiersza zmieniając tylko G6 na G7 , G8 , G9 itd

    Z góry dziękuję za pomoc

    0 5
  • #2 17 Lip 2016 10:30
    jack63
    Poziom 40  

    Trzeba użyć instrukcji pętli. Jakiej to zależy od tego czy zakres przeszukiwania jest ściśle określony czy nie.
    Jeżeli wiemy że mamy sprawdzać np. od G6 do G45, to pętla "for”.
    Jeżeli zakres nie jest znany, to pętle do lub while w zależności od sytuacji.
    Osobiście nie korzystałbym z range() tylko z innego sposobu odniesienia się do komórki. Takiego w którym posługujemy się tylko cyfrowym, a nie cyfrowo-literowym adresem komórki. Nie pamiętam w tym momencie jakiej funkcji należy użyć. Sorry. Poszukaj w helpie.

    0
  • #3 17 Lip 2016 10:49
    mmario33
    Poziom 8  

    Dziękuję za szybką , nie ukrywam ,że nie jestem specjalistą w VBA :( i dopiero zaczynam swoją przygodę z makrami. Jestem w stanie wyznaczyć ścisły zakres właśnie od np. G6 do G45. Czyli probować czegoś z petla for?

    Udało się problem rozwiązac. Jeszcze raz dziękuję za pomoc:)

    0
  • #5 17 Lip 2016 12:43
    JRV
    Specjalista - VBA, Excel

    W tym przypadku można zrobić bez makro i użyć formatowania warunkowego

    0