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.

Problem z makrem - Kopiowanie pierwszych 15 wynikow po sortowaniu

bigosiak 04 Mar 2017 22:08 423 10
  • #1 04 Mar 2017 22:08
    bigosiak
    Poziom 8  

    Witam.
    Jak stworzyć makro, aby sortowało i kopiowało pierwszych piętnaście wyników.
    Stworzyłem makro, ale kopiuje mi tylko zawsze te same 15 wierszy a nie 15 pierwszych po sortowaniu.
    Baza danych jest dynamiczna.
    Pozdrawiam. Plik w załączniku.
    P.S.
    Uscisle troche - w sheet2 sa dwa przyciski - CB - ktory mi sortuje wszystkie sprawy tzw live oraz przycisk J, ktory w zalozeniu powinien
    pokazac mi wszystkie sprawy z szuflady J posortowane datami.
    Niby dziala ale gdy zmieniam dane w sheet1 to niestety makro przestaje dzialac - sortuje wedlug szuflady ale nie kopiuje 15
    odpowiednich spraw.

    0 10
  • #2 07 Mar 2017 16:42
    Prot
    Poziom 30  

    bigosiak napisał:
    Stworzyłem makro, ale kopiuje mi tylko zawsze te same 15 wierszy a nie 15 pierwszych po sortowaniu.
    ...
    Niby dziala ale gdy zmieniam dane w sheet1 to niestety makro przestaje dzialac - sortuje wedlug szuflady ale nie kopiuje 15 odpowiednich spraw.


    W Twoich nagranych makrach praktycznie nic nie działa prawidłowo ani sortowanie ani kopiowanie.

    Czy mógłbyś jaśniej opisać wg jakich kryteriów chcesz filtrować i sortować tą tabelę z sheet1, które dane i jaki zakres ma być kopiowany do drugiego arkusza.

    Dodatkowo mógłbyś wyjaśnić czemu importowana jest do sheet1 cała tabela z accessa, zamiast pożądana kwerenda ? No i co znaczy tutaj pojęcie "szuflada" ? :D

    0
  • #3 07 Mar 2017 19:40
    bigosiak
    Poziom 8  

    Witam.
    Dzieki za zainteresowanie.
    Cala tabela jest kopiowana do sheet1 bo dostaje taki raport od zewnetrznego zrodla.
    Filtracja powinna sie odbywac wedlug klucza : kolumna AG - received, kolumna AF- empty oraz H - CB/CA - i to jest ukryte pod
    przyciskiem CB na sheet2 - nie widze tam problemu.
    Drugi przycisk powinien sortowac sprawy wedlug : kolumna O - run ( czyli te nieszczesne szuflady ) oraz D od najstarzych.
    I jezeli wezme jako kryterium Run J to pokazuje mi wszystkie sprawy spod J.
    I tu zaczynaja sie schody bo chcialbym przekopiowac tylko 15 pierwszych wierszy na sheet2 a to przy kazdej zmianie raportu daje
    mi wyniki niekoniecznie prawidlowe.
    Jest jakas funkcja as seen on screen any zawsze kopiowalo 15 wierszy widocznych?
    Pozdrawiam

    0
  • #4 07 Mar 2017 22:45
    Prot
    Poziom 30  

    bigosiak napisał:
    I tu zaczynaja sie schody bo chcialbym przekopiowac tylko 15 pierwszych wierszy na sheet2 a to przy kazdej zmianie raportu daje
    mi wyniki niekoniecznie prawidlowe.


    Wcale się nie dziwie temu nieprawidłowemu działaniu makra przycisku J, jeśli kod jego wygląda tak:
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    to dlaczego miałby spełniać Twoje oczekiwania :?:

    Ustawiane nowe filtry, brak sortowania, przedziwne zakresy ustawiane do kopiowania - lecz nigdzie nie ma ani "Top" filtru, ani mowy o tych 15 wierszach.

    Najlepiej będzie jeśli przygotujesz nowy skoroszyt z źródłowym arkuszem sheet1, oraz ręcznie przygotowany arkusz wynikowy - sheet2 (dokładnie taki jaki oczekujesz). Ewentualnie uzupełnij jakimiś dodatkowymi opisami.

    To drugie makro musi być całkowicie zmodyfikowane stosownie do Twoich oczekiwań.

    0
  • #5 08 Mar 2017 00:00
    bigosiak
    Poziom 8  

    Ok.
    Plik w zalaczniku.
    Sheet1 - pelna baza danych.
    Sheet2 - przycisk CB ktory przefiltruje wszystko tak jak trzeba.
    Przycisk J bez zadnego makra a pod nim lista recznie skopiowana z
    sheet1 - chcialbym pod przyciskiem J ukryc makro ktore dostarczy mi tych wartosci, przy
    zmieniajacej sie bazie danych.
    Czyli od C2:C16, D2:D16, O2:O16.
    Pozdrawiam

    0
  • #7 09 Mar 2017 06:40
    JRV
    Specjalista - VBA, Excel

    Czy to naprawdę jest 'Table_Query_from_MS_Access_Database', następnie po prostu zmienić polecenie kwerendy i masz gotowy wynik

    0
  • #8 09 Mar 2017 11:27
    Prot
    Poziom 30  

    JRV napisał:
    Czy to naprawdę jest 'Table_Query_from_MS_Access_Database'


    Pytałem o to na początku wątku i uzyskałem odpowiedź, że taki jest uzyskiwany raport z zewnątrz - w takiej postaci :cry:

    Zaproponowałem zatem wykorzystanie jako macroJ kodu:
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Jak widać nie mogłem sobie poradzić z uchwyceniem zmiennej last - numeru 15 wiersza :|

    Jeśli @JRV wywołał ten wątek Twoje zainteresowanie - to może zaproponujesz jakiś inny sposób uchwycenia takiej zmiennej :?:

    0
  • #9 09 Mar 2017 13:52
    bigosiak
    Poziom 8  

    Witam.
    A ja rozwiazalem to w ten sposob:

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    I z sheet3 przenoszone sa tylko pierwsze 15 wierszy.
    Wiem ze to takie obejscie, ale w tym momencie na to tylko mnie stac.
    Chyba ze ktos ma inny pomysl :)
    Pozdrawiam

    0
  • Pomocny post
    #10 09 Mar 2017 15:42
    Prot
    Poziom 30  

    bigosiak napisał:

    Drugi przycisk powinien sortowac sprawy wedlug : kolumna O - run ( czyli te nieszczesne szuflady ) oraz D od najstarzych.
    ...
    I tu zaczynaja sie schody bo chcialbym przekopiowac tylko 15 pierwszych wierszy na sheet2 a to przy kazdej zmianie raportu daje mi wyniki niekoniecznie prawidlowe.


    Jeśli Twoje rozwiązanie lepiej :?: realizuje w/w założone warunki to rozumiem, że Twój problem został rozwiązany.

    0
  • #11 09 Mar 2017 16:46
    bigosiak
    Poziom 8  

    Nie jest to idealne ale wystarczajace, aby spelnic oczekiwania.
    Dzieki bardzo za pomoc.
    Temat mozna udac za zamkniety.

    0