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.

Excel_VBA: Instrukcja warunkowa na nieaktywnych skoroszytach

skosiu 09 Paź 2012 04:02 711 3
  • #1 09 Paź 2012 04:02
    skosiu
    Poziom 6  

    Witam

    Mój problem polega na tym, że chce zrobić warunek, po spełnieniu którego skasowało mi się jedno pole. Dodam, iż chcę aby cały warunek wykonał się na nieaktywnym skoroszycie.

    Narazie zrobiłem coś takiego, ale nie działa:


    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0 3
  • #2 09 Paź 2012 07:40
    tomekptk
    Poziom 11  

    Oto działający kod z komentarzami:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #3 09 Paź 2012 20:41
    adamas_nt
    Moderator Programowanie

    :arrow: skosiu Nie mylisz pojęć skoroszyt/arkusz?

    :arrow: tomekptk Jaki sens ma deklarowanie zmiennej obiektowej typu Workbook w obrębie jednego skoroszytu (jak wynika z Twojego kodu)?

    Jeśli chodzi o nieaktywny arkusz, to słusznie Waść prawisz, trzeba się do niego odwołać, ale całość da się zmieścić w jednej linijce. Dalej jednak nie wiadomo, który to aktywny. Ten z "2014" (intuicja podpowiada, że tak)

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Czy z komórką do wyczyszczenia (jeśli intuicja zawodzi)
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Najprościej jednak wykorzystać zdarzenie arkusza "Przy zmianie" i zadziałać w momencie wpisania z góry upatrzonej liczby w F36, albo odwrotnie (zmiana w B4)...

    0
  • #4 09 Paź 2012 21:09
    tomekptk
    Poziom 11  

    [adamas_nt] Odpowiadam.

    "Jaki sens ma deklarowanie zmiennej obiektowej typu Workbook w obrębie jednego skoroszytu (jak wynika z Twojego kodu)?"

    Moja odpowiedź dla naszego początkującego kolegi ma mieć walory edukacyjne, dlatego zastosowałem taką konstrukcję. Może się wydawać trochę bez sensu w tak prostym przypadku, ale przy złożonych aplikacjach mających setki może tysiące linii kodu jest jedynym słusznym rozwiązaniem w programowaniu obiektowym.

    "[...] ale całość da się zmieścić w jednej linijce.".

    Umieszczanie instrukcji warunkowych w "jednej linijce" jest bardzo brzydką manierą programistyczną mocno zaciemniającą przejrzystość kodu, dlatego jej nie stosuję.

    "Dalej jednak nie wiadomo, który to aktywny. Ten z "2014" (intuicja podpowiada, że tak)."

    Temat dotyczy działań na nieaktywnych arkuszach, dlatego nie ma znaczenia jaki jest aktywny. Makro możemy wywołać z dowolnego arkusza i będzie działać. Możemy je nawet wywołać z innego skoroszytu, wtedy bardzo nam się przyda krytykowana przez Ciebie deklaracja skoroszytu w zmiennej obiektowej "VBAplik ".

    "Najprościej jednak wykorzystać zdarzenie arkusza "Przy zmianie".

    Zdarzenia to jest jedna z metod programistycznych. Tutaj nie wiemy jaka jest intencja twórcy tego projektu. Może chce, żeby cała akcja dokonała się po kliknięciu przycisku, a nie przy zmianie zawartości komórki? Nie mieszajmy za dużo początkującym kolegom bo się nam zniechęcą do programowania, a przecież nie o to chodzi. Prawda?

    0