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, problem z petla, object

amator_piotr 05 Lut 2012 20:53 1446 4
  • #1 05 Lut 2012 20:53
    amator_piotr
    Poziom 12  

    to dla mnie jeszcze za wysokie progi, czy moze mi ktos to wytlumaczyc czemu mam blad w:

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    przy wejsciu do petli, ukazuje sie blad, czemu?

    VBa Excel, problem z petla, object

    0 4
  • Pomocny post
    #2 05 Lut 2012 21:10
    marcinj12
    Poziom 40  

    Kod który Ci podawałem ostatnio działa tylko dla jednej kolumny, takiej samej jak Target.Column. U Ciebie nie działa bo funkcja Intersect() [zwracająca wspólną część dwóch zakresów] poza 15-tą kolumną jest teraz wywoływane na nie takich zakresach jak trzeba. Zmień początek tego makra na taki:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    a dalej już według uznania...

    0
  • #3 05 Lut 2012 21:59
    amator_piotr
    Poziom 12  

    chcialbym aby tylko dzialalo gdy w kolumnach 11 i 15 beda dokonane zmiany po za tym nie.

    Dodano po 46 [minuty]:

    tak maszracje osobno wszystko chodzilo lecz musalem to zespoic razem aby w momencie zmiany danych uzupelnialy sie nie tylko w jednej kolumnie jak zauwazyles.
    szukalem aby sie zaglebic bardziej w:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    nie umiem znalesc odpowiedzi co zwraca....?


    zatem jesli chcialbym aby cokolwiek bedzie wpisywane w kolumnach 11, 12, 13, 14, 15 wystarczy zmienic warunek if a wszystko bedzie dzialac bez problemu?

    0
  • Pomocny post
    #4 05 Lut 2012 22:29
    marcinj12
    Poziom 40  

    Intersect(Target, Columns(...)) zwraca zakres komórek typu Range(), będący wspólną częścią - w przypadku zdarzenia Worksheet_Change - obszaru, który uległ zmianie (Target) oraz wybranej kolumny (Columns(...)).

    Tym obszarem który uległ zmianie (Target) może być tylko jedna komórka (np. kiedy wpisujesz w nią wartość ręcznie), ale też zakres komórek (np. kiedy usuwasz wiersz lub wiersze albo wklejasz do kilkunastu komórek jednocześnie).

    Przytoczę raz jeszcze kod który podawałem wcześniej, zmodyfikowany do działania dla wielu kolumn oraz rozbudowany o sprawdzanie warunku dla kolumn A, B i E:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Kod, przyznaję, nie jest doskonały, są przypadki kiedy nie zaznaczy poprawnie (np. przy wklejaniu x w kilka kolumn jednocześnie, bo wtedy Target.Column będzie równe tylko pierwszej kolumnie), ale mi to jakoś specjalnie nie przeszkadza, a nie chciałem jeszcze bardziej kodu komplikować i spowalniać...

    0
  • #5 05 Lut 2012 22:34
    amator_piotr
    Poziom 12  

    dziekuje za wytlumaczenie :)

    0