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] - Uruchamianie makra przy zmianie komórki

Raynee 25 Maj 2016 12:11 1392 20
  • #1 25 Maj 2016 12:11
    Raynee
    Poziom 3  

    Witajcie,
    Natknęłam na mały problem podczas łączenia dwóch makr.
    Chciałabym, żeby po zamknęciu listy rozwijanej uruchamiało się makro kopiujące wyniki i dzielące je w kolumny - makro 'Dzielenie'. Próbowałam kilkoma różnymi sposobami, lecz bez rezultatu.

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Będę wdzięczna za każdą wskazówkę ;)

    0 20
  • #2 25 Maj 2016 12:39
    JRV
    Specjalista - VBA, Excel

    1. - W gorze modulu(na początku) wpisz
    Dim tekst As String
    2. -

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #3 25 Maj 2016 12:54
    Raynee
    Poziom 3  

    Podmieniłam, ale nadal nie działa


    Chyba niejasno opisałam problem...
    Obecnie makro uruchamia listę rozwijaną po najechaniu na komórkę J5, następnie wybrane elementy trafiają do I1. W kolejnym kroku chciałabym, żeby uruchamiało się makro dzielenie - automatycznie przy zmianie komórki z J5 na inną i tylko raz, żeby nie zamulało arkusza, bo jest spory.
    Makra są już napisane, brakuje jedynie fragmentu uruchamiającego w odpowiednim momencie kolejne makro.

    0
  • #5 25 Maj 2016 13:07
    JRV
    Specjalista - VBA, Excel

    Raynee napisał:
    automatycznie przy zmianie komórki z J5 na inną i tylko raz
    z tego trzeba było zacząć

    0
  • #6 25 Maj 2016 13:08
    Raynee
    Poziom 3  

    Mam identyczny plik, problemem jest właśnie przycisk 'dzielenie', którego ma nie być ;)


    Ed. Bezsensownie utrudniłam sobie całą procedurę.
    Czy byłbyś w stanie zmodyfikować makro zapisujące wybór z listy do oddzielnych komórek a nie do komórki I1?

    Code:
    Private Sub ListBox1_Change()
    
    Dim i As Integer

    Dim tekst As String
    For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) = True Then tekst = tekst & "," & ListBox1.List(i)
    Next i
    Range("I1") = Mid(tekst, 2)


    End Sub

    0
  • #8 25 Maj 2016 13:57
    Raynee
    Poziom 3  

    Opiszę może procedurę ;)

    1. Otwieram listę
    2. Zaznaczam kilka opcji
    3. Przenoszę opcje do komórki I1
    4. Dzielę otrzymane wyniki na kolumny <<< Chodzi o to żeby w momencie zamknięcia listy wyboru dane automatycznie zostawały podzielone, ale żeby istniała możliwość kolejnego wyboru :), czyli zamknięcie listy uruchamia makro 'dzielenie' - jednorazowo = w momencie zamknięcia listy, ale z mozliwością kolejnego wyboru
    5. Tworzę listę wyboru
    6. Uruchamiam makro żeby pobrać dane z SQL

    1. Otwieram listę
    2. Zaznaczam kilka opcji
    3. Przenoszę opcje do komórki I1, I2, I3, I4... itp, w zależności od ilości wybranych argumentów <<< Ta procedura znacznia skraca proces
    4. Tworzę listę wyboru
    5. Uruchamiam makro żeby pobrać dane z SQL


    Wyboldowałam to czego nie jestem w stanie obejść

    Tak to wygląda, mam nadzieję, że jest dość czytelne...

    0
  • #10 25 Maj 2016 16:24
    Raynee
    Poziom 3  

    Excel zwariował od tego kodu. Wiesza się strasznie, wyrzuca błąd przy
    If mark Or Range("i1") = "" Then

    0
  • #12 25 Maj 2016 16:30
    Raynee
    Poziom 3  

    muszę go 'zedytować' przed wrzuceniem tutaj, a to wieczorem :)

    Po lekkiej edycji calego pliku jest ok :)
    Jeszcze jedna rzecz jest dość uciążliwa - mianowicie przy każdorazowej zmianie aktywnej komórki uruchamia się makro dzielące wynik z I1, czy można to ograniczyć do jednorazowej akcji?


    Dorzucam plik

    0
  • #13 27 Maj 2016 12:29
    Raynee
    Poziom 3  

    Kolejny błąd - przy braku wyboru z pola listy nie zmienia poprzednich cyfr na puste komórki -_-

    0
  • #14 27 Maj 2016 16:34
    JRV
    Specjalista - VBA, Excel

    Raynee napisał:
    przy każdorazowej zmianie aktywnej komórki uruchamia się makro dzielące wynik z I1
    wyzwalane tylko raz, na którym widać, że więcej?
    zbyt skomplikowane formuły w 3-m wierszy i kolumnie L, uproszczony
    Raynee napisał:
    przy braku wyboru z pola listy nie zmienia poprzednich cyfr na puste komórki
    ponieważ ponowne obliczenie formuł nie jest automatyczne

    0
  • #15 27 Maj 2016 21:02
    Raynee
    Poziom 3  

    Spróbuj coś skopiować i wkleić komórkę niżej - nie działa, bo makro uruchamia się przy każdym kliknięciu ;)

    0
  • #18 28 Maj 2016 07:27
    JRV
    Specjalista - VBA, Excel

    Nie wiem jaky masz Excel, u mnia 2007 i wszystko działa. (oraz kopiowanie, oraz przy braku wyboru z pola listy zmienia poprzedni cyfry na puste komórki )

    0
  • #19 28 Maj 2016 10:34
    Raynee
    Poziom 3  

    excel2016
    przy ostatnim makrze nie uruchamia sie lista

    0
  • #20 28 Maj 2016 10:53
    JRV
    Specjalista - VBA, Excel

    Jesli lista ma nazwę ListBox1, wtedy

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    jest nie widoczna lub nie ma 'select'-ow?

    Dodano po 1 [minuty]:

    Zalacznik z post #16 dziala?

    0
  • #21 30 Maj 2016 15:14
    Raynee
    Poziom 3  

    Nie bardzo wiem, w jaki sposób miałoby to pomóc. Im więcej zmian tym niestety gorzej chodzi, a problem wydawał się łatwy ;)

    0