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 Excel, wyplenienie wiersza "x" kolorem po wpisaniu "..."

amator_piotr 05 Lut 2012 01:03 5137 12
  • #1 05 Lut 2012 01:03
    amator_piotr
    Poziom 12  

    potrzebuje aby wiersz "x" zostal wypelniony kolorem np pomaranczowym po wypelnieniu wartoscia "cos" w komurce "Nx".

    czy ktos mi moze pomoc?

    0 12
  • #2 05 Lut 2012 01:24
    Anonymous
    Użytkownik usunął konto  
  • #3 05 Lut 2012 02:45
    amator_piotr
    Poziom 12  

    sorry dziekuje za podpowiedz wiem jak to zrobic z pozycji Excel ale chcialbym to zrobic z pozycji VBa tak jak to napisalemw w temacie

    jednak dziekuje za podpowiedz :)

    0
  • Pomocny post
    #4 05 Lut 2012 13:01
    marcinj12
    Poziom 40  

    Akurat robiłem coś takiego do swojego projektu i mam kod pod ręką. Wklejasz go do arkusza, który ma obsługiwać "kolorowanie wiersza" po wpisaniu wybranego znaku (w moim wypadku: litery x do kolumny 1).

    Kod został rozbudowany o "dynamiczne" ustalanie zakresu kolumn do zaznaczenia (ost_col - ostatnia kolumna nagłówka), obsługę zarówno wpisania pojedynczej litery jak i "wklejenia" jej do zaznaczenia (wiele wierszy jednocześnie) oraz obsługuje zaznaczenie i usunięcie całych wierszy w jakimś sensowym czasie.

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Przykład w załączniku.

    0
  • #5 05 Lut 2012 13:08
    amator_piotr
    Poziom 12  

    wielkie dzieki to je to :)

    jak to przeksztalcic?
    jesli
    -wartosc w kolumnie "O" sie zmieni na "X" i od ktorej jest uzalezniony kolor
    -wiersz w ktorym to wystapi jest w zakresie od "A - U"

    jak to przerobic?

    0
  • Pomocny post
    #6 05 Lut 2012 14:01
    marcinj12
    Poziom 40  

    amator_piotr napisał:
    -wartosc w kolumnie "O" sie zmieni na "X" i od ktorej jest uzalezniony kolor

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    i
    Kod: vb
    Zaloguj się, aby zobaczyć kod
    musisz zmienić wartość 1 na numer odpowiedniej kolumny (dla O = 15)

    amator_piotr napisał:
    - wiersz w ktorym to wystapi jest w zakresie od "A - U"
    Analogicznie, zmień
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    na sztywno ustalony numer kolumny:
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #7 05 Lut 2012 15:39
    amator_piotr
    Poziom 12  

    marcinj12 napisał:
    ...ColorIndex = 8


    jak znaleść palete kolorów - kody, wiem ze jest ich 56... ale :(

    0
  • Pomocny post
    #8 05 Lut 2012 15:47
    marcinj12
    Poziom 40  

    amator_piotr napisał:
    jak znaleść palete kolorów - kody, wiem ze jest ich 56... ale :(
    http://dmcritchie.mvps.org/excel/colors.htm.
    Albo zrobić sobie for i = 1 To 56 i w kolejne wiersze wstawić
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #9 05 Lut 2012 16:07
    amator_piotr
    Poziom 12  

    nie wiem czemu ale nie chodzi mi to.... :(

    zrobiłem zgodnie z.... niczego nie przerabiałem lol

    Private Sub Worksheet_Change(ByVal Target As Range)

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    co tu jest nie tak? zgodnie z tym co mi podałeś to takie proste a jednak coś.....

    0
  • Pomocny post
    #10 05 Lut 2012 16:12
    marcinj12
    Poziom 40  

    amator_piotr napisał:
    If LCase(c.Value) = "Withdrawn"
    Funkcja LCase() konwertuje tekst na małe litery. Użyłem jej, żeby działało zarówno dla małego x jak i dużego X. Po przekonwertowaniu wartości w komórce c na małe litery nigdy nie uzyskasz spełnienia tego warunku który masz.

    0
  • #11 05 Lut 2012 19:21
    amator_piotr
    Poziom 12  

    czy mogłbys mi pomoc przeanalizowac:

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    taki bład mnie sie pokazuje

    VBa Excel, wyplenienie wiersza "x" kolorem po wpisaniu "..."

    0
  • #12 05 Lut 2012 19:26
    marcinj12
    Poziom 40  

    Wszystkie zapisy podobne do:

    Kod: vb
    Zaloguj się, aby zobaczyć kod
    są bez sensu - albo korzystasz z Range(), albo z Cells() - chyba że chcesz podać zakres, ale wtedy wewnątrz Range() muszą być 2x Cells().
    Generalnie wystarczy zrobić z tego:
    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Poza tym, zakres Range i Cells nie obsługują właściwości .Text, to jest niepoprawne:
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #13 05 Lut 2012 19:28
    amator_piotr
    Poziom 12  

    no co ucze sie :) lol

    0