Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Excel VBA - wyszukiwanie wartości - makro

szczudlo6 24 Lis 2014 13:17 951 10
  • #1 24 Lis 2014 13:17
    szczudlo6
    Poziom 8  

    Witam.
    Mam prośbę odnośnie stworzenia makro.
    W arkuszu "dane" potrzebuje wyszukać wartości powyżej 9 i poniżej -9 w kolumnie "cena".
    Tych kolumn "cena" jest kilka w arkuszu "dane".
    Gdy znajdzie takie wartości zaznaczy je kolorem na czerwono i wytnie cały wiersz i przeniesie na początek kolumny.

    Nie potrafię stworzyć makro z wyszukaniem takich wartości.
    Na razie udało mi się stworzyć makro do przenoszenia ręcznego całego wiersza:

    Kod: vb
    Zaloguj się, aby zobaczyć kod





    Będę wdzięczny za pomoc.

  • #2 28 Lis 2014 12:28
    szczudlo6
    Poziom 8  

    Udało mi się stworzyć cześć kodu.

    Kod: vb
    Zaloguj się, aby zobaczyć kod



    Jednak dalej nie moge stworzyć kolor wartości oraz żeby wyszukiwał w kolumnie z nazwą "cena". Jedynie udało sie wybrać konkretną kolumnę.

  • #3 28 Lis 2014 13:07
    marek003
    Poziom 40  

    Ma we wszystkich kolumnach z nagłówkiem cena szukać?

    Na marginesie Taki zapis:
    Range("F" & CStr(a)).Value
    spokojnie mogłeś zastąpić:
    Range("F" & a).Value
    a najlepiej
    Cells(a,6).Value

    Cells(wiersz,kolumna)

    To samo z wierszem. Wystarczy Rows(a).Cut

    i jeszcze jedno po co "bawisz się" obsługą błędów?

  • #4 28 Lis 2014 13:23
    szczudlo6
    Poziom 8  

    Jest kilka kolumn z nazwą "cena" ( np. C,F,K,O) i są opisane w wierszu 1.
    Szukalem odpwiedniego makro i krok po kroku stworzylem takie cos. Jak masz jakies rady to chetnie wyslucham.

  • #5 28 Lis 2014 13:31
    marek003
    Poziom 40  

    Zamknij wcześniejszą twoją pętlę w jeszcze jednej pętli warunkowej While ... Wend
    Dodaj jej warunek sprawdzający każda komórkę z pierwszego wiersza czy nie zawiera "cena" oraz ogranicz do ilości kolumn (np. poprzez przekroczenie wartości zmiennej odpowiedzialnej za kolejne podstawianie nr kolumny)

    Poradzisz sobie?

  • #6 28 Lis 2014 13:36
    szczudlo6
    Poziom 8  

    hmm....
    Bylbym wdzieczny jakbys mi to w kodzie pokazal. Bo az tak nie ogarniam. Dzieki z gory

  • #7 28 Lis 2014 13:58
    marek003
    Poziom 40  

    Twoja koncepcja

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Tylko że jeden szkopuł - jeżeli w pierwszym wiersz (czyli drugim) z danymi jest wartość spełniajaca warunek system się rozjeżdża. - trzeba dodać dodatkowy warunek

    ----------------------------
    Dodałem już ten warunek

    ---------------------------
    A przed chwila jeszcze go troszeczkę zmieniłem i dodałem opisy

  • #8 28 Lis 2014 14:42
    szczudlo6
    Poziom 8  

    dzieki wielkie. Przetestuje to i jak bedzie jakis problem to sie odezwe.

    Dodano po 29 [minuty]:

    Makro dziala tylko na kolumne ktora napotka pierwsza z nazwa cena, gdy zakonczy przerzucac do gory nie idzie do nastepnej kolumny tylko konczy proces.

  • #9 28 Lis 2014 15:23
    marek003
    Poziom 40  

    Rzeczywiście - nie tu deklaracja początkowych zmiennych a i b

    Tak powinno być

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Tylko że pamiętaj że jeżeli w kolejnej kolumnie z ceną niżej będzie cena która spełni warunki to zostanie ona umieszczona jako druga na liście

    Jeżeli ma być inaczej i ustawić się cena z kolejnej kolumny od ostatniego wiersza gdzie została zakończona poprzednia kolumna to trzeba wrócić ze "startem" zmiennej b przed pierwszą pętlę - Czyli tak jak za pierwszym razem.
    I koniecznie zmienić warunek a<>b na a>b

    Poradzisz sobie? :)

  • #10 28 Lis 2014 15:28
    szczudlo6
    Poziom 8  

    Działa!! Dzięki wielkie :)

  • #11 28 Lis 2014 15:33
    marek003
    Poziom 40  

    Przez przypadek wyłączyłem jedną linię kodu.
    Usuń pierwszy apostrof z tej linii:
    'Worksheets("dane").Select

 
Promocja -20%
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
tme