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] Skracanie skryptu, pętla

pa-jong 02 Maj 2014 13:44 1422 13
  • #1 02 Maj 2014 13:44
    pa-jong
    Poziom 9  

    Witam,
    czy któryś z szanownych forumowiczów jest wstanie pomóc mi skrócić makro ?

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    makro zawierało 600 druków i niestety w takie formie jest za duże dla excela (
    (compile error: procedurę to large)

    Próbowałem to skrócić ale średnio mi idzie, nie powiem, że nie ucieszyłby mnie jakiś adekwatny przykład lub nawet rozwiązanie, ale przede wszystkim liczę na wskazówki...

    do rzeczy:
    Chciałbym je skrócić do 4 druków wrzucając wszystko w pętle.
    adresy komórek w każdym z druków zwiększają się odpowiednio o 4 i 64

    DRUK 1: A1, V28 => DRUK 5: A5, V92 => DRUK 9: A9, V156 przyrost o 4 i 64)
    DRUK 2: A2, BD28 => DRUK 6: A6, BD92 => DRUK 10: A10, BD156 przyrost o 4 i 64)

    DRUK 3: A3, V59 => DRUK 7: A7, V123 => DRUK 11: A11, V187 przyrost o 4 i 64)
    DRUK 4: A4, BD59 => DRUK 8: A8, BD123 => DRUK 12: A12, BD187 przyrost o 4 i 64)

    itd.

    Ktoś mi pomoże to zapisać krócej?

    0 13
  • Pomocny post
    #2 02 Maj 2014 15:06
    marcinj12
    Poziom 40  

    pa-jong napisał:
    Sheets("DRUKI SORTOWANIE").Select
    Range("A1").Select
    Selection.Copy
    Sheets("KP").Select
    Range("V28:W28").Select
    ActiveSheet.Paste

    Taki fragment można zapisać krócej tak:
    Gdzieś na początku makra:
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    a dalej:
    1. jeżeli chcesz skopiować tyko wartości, bez formatów:
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    2. jeżeli chcesz skopiować wartości z formatami:
    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Całość pewnie można wrzucić jakoś w pętlę For, ale Twój opis zależności nie jest dla mnie zrozumiały.

    0
  • #3 02 Maj 2014 16:11
    JRV
    Specjalista - VBA, Excel

    Witaj.
    Aby być bardziej wyraźne, jeśli tylko się wnieść na arkusze zakresy, skąd i gdzie skopiować. Ten arkusz załącz tutaj.

    0
  • #4 02 Maj 2014 23:41
    pa-jong
    Poziom 9  

    Dzięki, poprawiłem według wskazówek ;)

    marcinj12 napisał:

    Całość pewnie można wrzucić jakoś w pętlę For, ale Twój opis zależności nie jest dla mnie zrozumiały.


    To może inaczej, potrzebuję zapętlić 150 razy ten fragment za każdym razem zwiększając wsKp.Range o 64 i wsSort.Range o 4.

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #5 03 Maj 2014 04:36
    PRL
    Poziom 33  

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #6 03 Maj 2014 08:12
    JRV
    Specjalista - VBA, Excel

    Witaj
    Spróbuj

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #7 03 Maj 2014 10:12
    pa-jong
    Poziom 9  

    JRV napisał:
    Witaj
    Spróbuj
    Widzę, że skróciłeś to jeszcze bardziej niż planowałem.Fajnie, niestety nie trafia w odpowiednie komórki.
    Ponieważ na tym etapie jeszcze nie ogarniam zbytnio to pozwoliłem sobie rozszerzyć do bardziej przyjaznej dla mnie formy ;-)

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    niestety o ile za pierwszym razem komórki uzupełniają się poprawnie, o tyle w każdej kolejnej pętli uzupełniają się tylko wartości z wsSort.Range("An") oraz ("En")

    Dodano po 34 [minuty]:

    Załączam Arkusz.

    0
  • #8 03 Maj 2014 10:56
    JRV
    Specjalista - VBA, Excel

    No widzisz. Kto wiedział, że się ze scaloną komórką?
    Byłby zupełnie inny skrypt

    0
  • #9 03 Maj 2014 11:04
    pa-jong
    Poziom 9  

    Gdybym tylko wiedział, że to istotne.. ;) ale dzięki temu dowiedziałem się czegoś dodatkowego :P

    0
  • #10 03 Maj 2014 11:21
    JRV
    Specjalista - VBA, Excel

    Trochę niejasne podwójny ukośnik. Przenieś w dół przechodzi przez 64 lub 66?
    (na DRUKI SORTOWANIE)

    edit: Jasne, przez 64
    Tak więc należy skopiować do KP lub KW, w zależności od kolumna G?

    0
  • #11 03 Maj 2014 11:55
    pa-jong
    Poziom 9  

    heh.. no w zasadzie tak ;)

    Dodano po 4 [minuty]:

    edit: Tylko, że kwoty do KP to kolumna E a kwoty do KW to kolumna F

    Dodano po 6 [minuty]:


    A czy jest możliwość, aby Arkusz z drukami był od razu mieszany ?
    tzn KP i KW na jednym arkuszu w odpowiedniej kolejności?

    wzory KP i KW różni się nieco prawym dolnym rogiem ( z podpisami ) więc rozbiłem je na dwa arkusze i chciałem osobno robić dla KP i dla KW

    Ale gdyby tak dało się kopiować szablon KP lub KW ( w zależności od kolumny G )
    i dopiero wtedy kopiować do nich odpowiednie wartości.. z DRUKI SORTOWANIE... marzenie... jest to możliwe ?

    0
  • #12 03 Maj 2014 13:11
    JRV
    Specjalista - VBA, Excel

    Iistnieje, że wszystko jest możliwe...
    Dodaje Pan coś jeszcze? Bo nie chce za każdym razem ponownie przepisać.
    Czas zmarnowany

    0
  • #13 03 Maj 2014 14:01
    pa-jong
    Poziom 9  

    Jasne rozumie, Chyba wszystko.[/tex]

    0
  • Pomocny post
    #14 03 Maj 2014 14:08
    JRV
    Specjalista - VBA, Excel

    Na dwie formy

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Ale ponieważ formularze znajdują się równomiernie, wszystko jest możliwe za pomocą formuły, łącznie z mieszanej

    0