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.

msgbox jako okno przypomnienia - ecxel

Herat 12 Kwi 2011 09:00 1255 10
  • #1 12 Kwi 2011 09:00
    Herat
    Poziom 8  

    Witam.
    Poszukuję rozwiązania następującego zagadnienia.(Excel)
    W komórce A1 mam listę rozwijaną z której po wybraniu konkretnego zapisu (w tym przypadku liczby) pojawiało by się okno komunikatu. Tylko jako przypomnienie, bez wykonywania procedury. Okno komunikatu ma reagować tylko na kilka zapisów w liście a nie na wszystkie pozycje listy.
    Dzięki za wszystkie porady.

    0 10
  • #2 12 Kwi 2011 12:58
    marcinj12
    Poziom 40  

    Wstaw taki kod do arkusza z komórką:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #3 12 Kwi 2011 14:35
    Herat
    Poziom 8  

    dzięki działa.
    To może jeszcze pomarudzę.
    Właśnie zmieniły się zasady wyskakiwania komunikatu - szefostwo buuu
    Makro ma sprawdzać zakres komórek, przyjmijmy że od a1 do a5 a okienko ma reagować na każdą wybraną z listy pozycję.
    przepraszam.

    0
  • #4 12 Kwi 2011 15:25
    marcinj12
    Poziom 40  

    Zmiana w komórce A1 ma sprawdzać, czy wartość jest w zakresie A1 do A5??
    Coś nie bardzo ten przykład :), niech będzie sprawdzanie w zakresie C1:C5 w tym samym arkuszu.

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #5 12 Kwi 2011 15:39
    Herat
    Poziom 8  

    kurcze u mnie działa tak:
    jak wpiszę cokolwiek w komórki z zakresu C1:C5 to komunikat nie wyskakuje a jak wpisze i skasuję zapis w komórce A1 to dopiero wyskakuje komunikat :?

    Soryy. Własnie doczytałam się jakiego babola walnęłam.
    VB ma sprawdzać tylko zakres - np C1:C5.
    czyli : czy w zakresie komórek występuje zapis czy nie.
    Jeśli tak to komunikat

    0
  • #6 12 Kwi 2011 22:24
    marcinj12
    Poziom 40  

    Niezdecydowany jak kobieta na zakupach... :]
    Czyli (makro reagujące na wartości podane w kodzie, przy zmianie komórki w zakresie C1:C5, rozbite dla większej czytelności na 3 if-y):

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Listę możesz zdefiniować w Excelu standardowo, tj. Dane->Sprawdzanie poprawności->Lista

    0
  • #7 13 Kwi 2011 09:10
    Herat
    Poziom 8  

    Dzięki za pomoc.
    Jeszcze jedno pytanko.
    Czemu VB nie pozwala na dwie procedury -w jednym arkuszu-uruchamiane przy tym samym zdarzeniu?
    Może to głupie pytanie ale dopiero uczę się programowania w VB.

    0
  • #8 13 Kwi 2011 09:35
    marcinj12
    Poziom 40  

    Ne rozumiem pytania... :)
    Pozwala, piszesz dwie procedury w jednym zdarzeniu i uruchamiają się wtedy obydwie:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #9 13 Kwi 2011 09:52
    Herat
    Poziom 8  

    No to już wszystko rozumiem.
    Ja starałam się za każdym razem wpisywać :

    Private Sub Worksheet_Change(ByVal Target As Range)
    i procedurę1

    a następnie
    Private Sub Worksheet_Change(ByVal Target As Range)
    i procedura 2

    Mam kilka książek o vb ale niestety co doświadczene to doświadczenie.
    Zresztą mam od czasu do czasu wrażenie że omijają niektóre problemy uważając że to wynika samo z siebie.

    0
  • #10 13 Kwi 2011 10:02
    marcinj12
    Poziom 40  

    Procedura Private Sub Worksheet_Change(ByVal Target As Range) jest procedurą już zdefiniowaną, która wywołuje się przy każdej zmianie w arkuszu, i jako taka może być tylko jedna, podobnie jak inne funkcje wbudowane w pojedynczy arkusz: Activate, Calculate etc. czy cały Workbook: Open, Acivate etc.
    Jeżeli chcesz, żeby ta procedura wywoływała Twoje własne, musisz je podać jak w przykładzie powyżej.
    Pozdrawiam

    0