Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Excel VBA - wyszukiwanie wartości - makro

szczudlo6 24 Nov 2014 13:17 2787 10
  • #1
    szczudlo6
    Level 10  
    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:

    Code: vb
    Log in, to see the code





    Będę wdzięczny za pomoc.
  • #2
    szczudlo6
    Level 10  
    Udało mi się stworzyć cześć kodu.

    Code: vb
    Log in, to see the code



    Jednak dalej nie moge stworzyć kolor wartości oraz żeby wyszukiwał w kolumnie z nazwą "cena". Jedynie udało sie wybrać konkretną kolumnę.
  • #3
    marek003
    Level 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
    szczudlo6
    Level 10  
    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
    marek003
    Level 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
    szczudlo6
    Level 10  
    hmm....
    Bylbym wdzieczny jakbys mi to w kodzie pokazal. Bo az tak nie ogarniam. Dzieki z gory
  • #7
    marek003
    Level 40  
    Twoja koncepcja

    Code: vb
    Log in, to see the code


    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
    szczudlo6
    Level 10  
    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
    marek003
    Level 40  
    Rzeczywiście - nie tu deklaracja początkowych zmiennych a i b

    Tak powinno być

    Code: vb
    Log in, to see the code


    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
    szczudlo6
    Level 10  
    Działa!! Dzięki wielkie :)
  • #11
    marek003
    Level 40  
    Przez przypadek wyłączyłem jedną linię kodu.
    Usuń pierwszy apostrof z tej linii:
    'Worksheets("dane").Select