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 - zaznaczanie kolumn w arkuszu innym niż arkusz osadzenia makra

adgawpl 19 Lip 2013 20:12 7116 6
  • #1 19 Lip 2013 20:12
    adgawpl
    Poziom 9  

    Chcę napisać makro które będzie przenosiło dane o dynamicznej objętości (ilość wierszy i kolumn zmienna) z jednego arkusza do drugiego. W drugim arkuszu do przeniesionych danych chcę automatycznie ustawiać filtr dla wszystkich kolumn z danymi. Liczba kolumn będzie zmienna więc do określenia kolumn nie mogę użyć oznaczeń literowy. Problem mam z tym iż polecenia które zastosowałem działają idealnie w arkuszy, w którym jest osadzone makro. Ale powodują błąd (1004: Application-defined or object-defined error) w arkuszu innym. Może ktoś wie jak obejść ten problem.

    Poniżej prosty kod na którym "praktycznie" próbuję rozwiązać problem. W założeniu powinien on ustawić filtry w obydwu arkuszach dla określonych kolumn lub określonych komórek w pierwszym wierszu.

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    W arkuszu 1 działają obydwie metody:
    - Range(Columns(4), Columns(8))
    - Range(Cells(1, 3), Cells(1, 8))
    w arkuszu 2 obydwie generują błąd

    0 6
  • #2 19 Lip 2013 20:56
    adamas_nt
    Moderator Programowanie

    Jeśli aktywnym jest "Arkusz1", a z tego co piszesz jest, to zachowaj kolejność. Najpierw wybierz arkusz, następnie zakres

    Kod: vb
    Zaloguj się, aby zobaczyć kod
    Select dla zakresów nie działa na nieaktywnym arkuszu...

    0
  • #3 20 Lip 2013 11:08
    adgawpl
    Poziom 9  

    Tak też kombinowałem (łącznie z: Worksheets, Sheets, Activate, Select), nic to nie pomaga poza faktem że wykonanie makra zatrzymuje się na arkuszu 2, czepiając się linijki: Worksheets("Arkusz2").Range(Columns(4), Columns(8)).Select

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    -1
  • Pomocny post
    #4 20 Lip 2013 11:29
    adamas_nt
    Moderator Programowanie

    Pewnie makro masz w kodzie arkusza. Musi być w module...
    Jeśli to procedura zdarzeniowa, wywołaj je po nazwie (Call NazwaMakraInModule)

    0
  • #5 23 Lip 2013 20:45
    adgawpl
    Poziom 9  

    Dzięki, jest OK. Teraz działa poprawnie :D

    Ale z racji że jestem laikiem w programowaniu to mam kolejne pytanie.
    Jak umieścić w konkretnym arkuszu Przycisk polecenia (formant ActiveX) tak aby odpalał makro z Modułu :?:

    0
  • Pomocny post
    #6 23 Lip 2013 20:57
    adamas_nt
    Moderator Programowanie

    adgawpl napisał:
    Jak umieścić w konkretnym arkuszu Przycisk polecenia (formant ActiveX) tak aby odpalał makro z Modułu
    Z toolboxa (v.2007^ ;) menu 'Wstaw' na karcie developer (dolna grupa kontrolek), następnie "wyświetl kod" i wpisujesz: Call NazwaMakra

    0
  • #7 27 Lip 2013 12:03
    adgawpl
    Poziom 9  

    Działa :D dzięki
    jeszcze mam sposób: Module1.Makro1
    Przy jakichś zabawach praktycznie wyczaję różnicę między tymi sposobami.

    Jeszcze tylko muszę nauczyć się uruchamiać makrem, makro z innego pliku; potem jak w VBA obliczyć CRC i wiem wszystko co mi jest na tę chwilę potrzebne do szczęścia :D

    Jeszcze raz dzięki za pomoc.

    0