Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

VBA Excel - zaznaczanie kolumn w arkuszu innym niż arkusz osadzenia makra

adgawpl 19 Jul 2013 20:12 8700 6
  • #1
    adgawpl
    Level 10  
    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.
    Code: vb
    Log in, to see the code


    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
  • #2
    adamas_nt
    Moderator of Programming
    Jeśli aktywnym jest "Arkusz1", a z tego co piszesz jest, to zachowaj kolejność. Najpierw wybierz arkusz, następnie zakres
    Code: vb
    Log in, to see the code
    Select dla zakresów nie działa na nieaktywnym arkuszu...
  • #3
    adgawpl
    Level 10  
    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
    Code: vb
    Log in, to see the code
  • Helpful post
    #4
    adamas_nt
    Moderator of Programming
    Pewnie makro masz w kodzie arkusza. Musi być w module...
    Jeśli to procedura zdarzeniowa, wywołaj je po nazwie (Call NazwaMakraInModule)
  • #5
    adgawpl
    Level 10  
    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 :?:
  • Helpful post
    #6
    adamas_nt
    Moderator of Programming
    adgawpl wrote:
    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
  • #7
    adgawpl
    Level 10  
    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.