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 - dwie listy rozwijalne, makro czyszczące ?

nao1 18 Sty 2012 15:52 1738 13
  • #1 18 Sty 2012 15:52
    nao1
    Poziom 13  

    Witam

    mam dwie listy rozwijalne i dodane makro które miało czyścić jeśli w pierwszej liście zajdzie jakaś zmiana wtedy druga jest pusta, makro działa ale przy obróbce danych w arkuszu makro się "wykrzacza" dlaczego tak się dzieję co w nim należy zmienić.

    Proszę o pomoc !


    użyty kod makra
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target = Range("x17") Then Range("y17").ClearContents
    End Sub

    z góry dziękuję za pomoc

    0 13
  • #2 18 Sty 2012 16:15
    walek33
    Poziom 28  

    Sprecyzuj "wykrzacza". Tylko wróżka w tej chwili zgadnie.

    Edit:
    Makro podane przez Ciebie działa tak jak jest napisane.

    0
  • #3 18 Sty 2012 16:19
    adamas_nt
    Moderator Programowanie

    Dopisz do instrukcji: And Target.Count=1

    0
  • #4 18 Sty 2012 16:29
    walek33
    Poziom 28  

    :arrow: adamas_nt
    Uświadom laika co to zmieni?

    PS. Laik tutaj to ja.

    0
  • #5 18 Sty 2012 16:39
    nao1
    Poziom 13  

    adams jestem zielony jeszcze jeśli chodzi o VBA gdzie dokładnie dopisać

    wykrzacza tzn mając to VBA

    w innym zakresie komórek wypełniałem serię danych i makro się chciało debugowac nie rozumiem czemu skoro nie używałem listy rozwijalnej.

    skopiowałem to makro chcąc usunąć problem drugiej listy rozwijalnej która miała być pusta w przypadku kiedy nastąpiły zmiany w pierwszej liście i po sprawdzeniu działało jak należy

    ale później dodawałem wiersze przesunęły się komórki z listą rozwijalną ale w makrze zmieniłem odwołanie do tych komórek ale i tak makro się odzywało przy wypełnianiu serii danych w innym miejscu nie bardzo wiem dlaczego.

    Dodano po 5 [minuty]:

    Run-time error '13'
    type mismatch

    i na żółto zaznacza mi ten wiersz:
    If Target = Range("x17") Then

    0
  • #6 18 Sty 2012 16:40
    walek33
    Poziom 28  

    Jaki jest błąd podawany przez VBA?
    A może wkleisz cały kod makra (lub przykładowy skoroszyt), bo podane przez Ciebie działa wyłącznie na komórkach x17 i y17 i to bez żadnego problemu.

    Edit:

    Cytat:
    Run-time error '13'
    type mismatch

    to niezgodność typów

    0
  • #7 18 Sty 2012 16:47
    adamas_nt
    Moderator Programowanie

    :arrow: walek33 Przestań (z laikiem)...

    Chodzi o to, że jeśli chcesz wyczyścić większy zakres (zaznaczenie + Del) lub coś podobnego, to taka próba zakończy się błędem...

    Spróbuj:
    If Target = Range("x17") and Target.Count=1 Then Range("y17").ClearContents

    0
  • #8 18 Sty 2012 16:52
    nao1
    Poziom 13  

    załączam przykladowy plik

    i teraz np. sprobój wpisac w jakas kolumn obojetnie b cz c jakąs wartość i wypełnić w dół serią danych nie wiem dlaczego makro się odzywa jeśli ja nic nie grzebie w nim tylko wypełniam serią danych inne zakresy.

    0
  • #9 18 Sty 2012 16:56
    nao1
    Poziom 13  

    adamas

    po dodaniu linijki sugerowanej przez Ciebie sytuacja się mimo wszystko powtarza... :(

    0
  • #10 18 Sty 2012 16:59
    adamas_nt
    Moderator Programowanie

    O, to w takim przypadku zamknij w instrukcji warunkowej

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #11 18 Sty 2012 17:00
    walek33
    Poziom 28  

    Żeby się pozbyć skutecznie tego problemu zastąp:
    Target - Target.Address i
    Range("x17") - Range("x17").Address
    Upierdliwość powinna ustąpić.

    Edit:

    adamas_nt jak zwykle szybszy :D
    Masz teraz dwie możliwości do wyboru. Żadna z nich jednak nie spowoduje wyczyszczenia y17 w przypadku wyboru z listy w x17. Do czyszczenia zmusi Del lub edycja rzeczonej komórki. Częściowo problem rozwiążesz przenosząc kod do
    Worksheet_SelectionChange. To zadziała po każdym nadepnięciu na x17.

    0
  • #12 18 Sty 2012 17:12
    nao1
    Poziom 13  

    po sugestiach mimo wszystko nie działa upierdliwość ustepuje na rzecz nie czyszczenia 2 listy rozwijalnej a przeciez nie o to mi chodzi w tym,

    0
  • #13 18 Sty 2012 18:55
    adamas_nt
    Moderator Programowanie

    Wcześniej nie pobierałem pliku ;)
    Akcja dotyczy tylko jednej komórki... Zrób jak radzi walek33

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #14 19 Sty 2012 02:10
    nao1
    Poziom 13  

    dziękuje obu panom za fachowe i pomocne rady, teraz śmiga bardzo ładnie...
    pozdrawiam i życzę miłego dnia

    0