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] Zautomatyzowana obróbka wykresu

acp___ 01 Lip 2018 23:09 186 2
  • #1 01 Lip 2018 23:09
    acp___
    Poziom 8  

    Próbuję stworzyć kilka makr, które w rezultacie stworzą narzędzie do ujednolicania wyglądu wykresów na podstawie wczytanych z pliku *.csv danych oraz ułatwią przeglądanie. Dążę do pełnej automatyzacji.

    Stworzyłem makro, które wyróżnia i ukrywa wybrane serie, oraz takie które ustawia styl dla każdej serii wg. moich preferencji, mam pomysł na to jak rozwiązać przeglądanie wykresu (coś ala "giełdowy" wykres), natomiast utknąłem na konfiguracji wyglądu osi głównych i pomocniczych.
    Czy da się odwołać bezpośrednio do:
    - osi głównej X,
    - osi pomocniczej X,
    - osi głównej Y,
    - osi pomocniczej Y.

    Uczę się i głównie bazuję na nagrywaniu makr i ich edycji. W przypadku wyżej opisanego problemu, makro odwołuje się do wybranego kursorem typu osi: ActiveChart.Axes(xlValue).MinorGridlines.Select

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    "Szablon wykresu" trzeba by wysyłać za każdym razem gdy ktoś nowy zabiera się za obróbkę i jeszcze tłumaczyć gdzie umieszczać... itd.

    0 2
  • #2 03 Lip 2018 19:53
    lanzul
    Poziom 26  

    acp___ napisał:
    ... Czy da się odwołać bezpośrednio do ...
    ... makro odwołuje się do ... osi: .Select

    Rozumiem, że chodzi o odwołanie się do danej osi bez "pośrednictwa" '.Select" ... ?
    Jeśli tak, to trzeba po prostu usunąć ".Select" i stworzyć sobie drzewko hierarchii obiektów, np. w starej notacji:
    Zeszyt..zip Download (8.57 kB)
    Kod: vba
    Zaloguj się, aby zobaczyć kod

    0
  • #3 05 Lip 2018 18:14
    acp___
    Poziom 8  

    Ze mnie jest kombinator, a że nikt nic nie odpisywał no to zacząłem próbować...

    Nie znam się dobrze na VBA, ale podszedłem co do zasady, że w nawiasach są parametry funkcji... tak więc zamiast "x1Value" trzeba podstawić takową...

    No i okazało się, że makro działa dla:

    Code:
    ActiveChart.Axes(1).MinorGridlines.Select
    
    ActiveChart.Axes(2).MinorGridlines.Select
    ActiveChart.Axes(1).MajorGridlines.Select
    ActiveChart.Axes(2).MajorGridlines.Select


    Miało to dla mnie sens:
    Minor - linie pomocnicze
    Major - linie głowne
    1 - oś pozioma
    2 - oś pionowa

    Pytanie, czy to co zrobiłem ma sens, czy jakoś działa, ale może w jakimś innym Excelu przestać działać (nie jest kompatybilne ze starszymi lub nowszymi od 2010)?

    Drugie pytanie odnosi się do Twojego rozwiązania, czy:
    a) x1Category to oś "X", a x1Value to oś "Y"?
    b) "With" rozumiałem jako coś dzięki czemu dla "poleceń o tym samym początku do kropki" można uprościć kod, czy to ma jeszcze jakąś ukrytą funkcję?
    c) wydawało mi się, że ".Select" jest konieczne gdy chcemy coś z danym obiektem robić... tak jest przy nagrywanych makrach, choć zdaję sobie sprawę, że każda czynność zaczyna się od wybrania obiektu.

    Przykład
    Kod: vba
    Zaloguj się, aby zobaczyć kod

    ______________________________________________________________________________________________________
    Edit: 2018.07.09 11:20
    ______________________________________________________________________________________________________
    Trafiłem na dziwaczny problem, nagrałem makro, cofnąłem zmianę i uruchomiłem makro… no i wywala błąd.
    Nie zależnie czy wykres ma (Name): “Wykres1”, “Wykres 1”, “Wykres” i kombinuję ze zmianą w kodzie, nie działa.

    Cytat:
    ActiveSheet.Shapes("Wykres1").Line.Visible = msoFalse


    Poniżej link do filmiku: https://youtu.be/EefAA52b4Jg

    Biorę pod uwagę kilka możliwości:
    a) w arkuszu jest jakiś błąd… i nic nie poradzę na to,
    b) błąd jest w kodzie VBA, nie ma prawa działać, brakuje jakiegoś polecenia,
    c) zmiana nazwy (Name) “Arkusz2” na “Arkusz” coś pomieszała…

    Nie ważne ile razy tworzę nowy wykres i uruchamiam makro – nie działa.
    Nie ważne jak bym nie kombinował z nazwami – nie działa…

    Proszę o pomoc.

    0
  Szukaj w 5mln produktów