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

VBa Excel, problem z petla, object

amator_piotr 05 Feb 2012 20:53 1719 4
  • #1
    amator_piotr
    Level 12  
    to dla mnie jeszcze za wysokie progi, czy moze mi ktos to wytlumaczyc czemu mam blad w:

    Code: vbscript
    Log in, to see the code


    przy wejsciu do petli, ukazuje sie blad, czemu?

    VBa Excel, problem z petla, object
  • Helpful post
    #2
    marcinj12
    Level 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:
    Code: vbscript
    Log in, to see the code

    a dalej już według uznania...
  • #3
    amator_piotr
    Level 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:

    Code: vbscript
    Log in, to see the code

    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?
  • Helpful post
    #4
    marcinj12
    Level 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:
    Code: vbscript
    Log in, to see the code

    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ć...
  • #5
    amator_piotr
    Level 12  
    dziekuje za wytlumaczenie :)