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 - Makro - jak przyspieszyć jego działanie

picia240183 26 Maj 2014 14:11 2592 3
  • #1 26 Maj 2014 14:11
    picia240183
    Poziom 9  

    Napisałem makro, które kopiuje dane do kolejnych kolumn. Robi z wielu wierszy dotyczących tego samego adresu jeden wiersz który zawiera informacje z tamtych wierszy w kolejnych komórkach. Problem jest taki, że mam do obrobienia mnóstwo wierszy i makro bardzo wolno pracuje, zacina się. N małej ilości danych jest ok a jak już mam powyżej 14000 wierszy do obrobienia to są problemy. Proszę o pomoc.

    Kod źródłowy makra:

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    W załączniku dane przykładowe

    Wysłałem zła wersję kodu. Oczywiście wszędzie gdzie jest integer musi być long

    0 3
  • #2 26 Maj 2014 23:13
    cbrman
    Poziom 27  

    Zacznij od:
    - wyłączenia odświeżania ekranu
    - wyłączenia zdarzeń
    czyli na początku kodu

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Analogicznie na końcu kodu włącz powyższe właściwości.
    Dodatkowo jeszcze nie baw się w przechodzenie do komórek przy kopiowaniu, tylko kopiuj od razu ze wskazaniem komórki docelowej, czyli zamiast:
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    wpisz:
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    To tak na początek, ale po tych zmianach makro powinno dostać wyraźnego przyspieszenia.

    0
  • #3 27 Maj 2014 00:08
    picia240183
    Poziom 9  

    zmieniłem kod tak jak poradziłeś dodałem jeszcze zmienną LI która powoduje że makro nie mieli od początku ale od ostatniego wiersza. Jest poprawa ale nadal nie działa zbyt szybko. Teraz nie wiadomo w którym momencie jest. Ile zostało do końca
    Kod po modyfikacjach:

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Proszę jeszcze o jakieś rady.

    0
  • #4 27 Maj 2014 07:55
    JRV
    Specjalista - VBA, Excel

    Witaj

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0