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 - Optymalizacja kopiowania komórek z formatowaniem

dwieszopy 12 Kwi 2016 11:38 738 4
  • #1 12 Kwi 2016 11:38
    dwieszopy
    Poziom 9  

    Witam
    Musze przekopiować wiele pojedynczych komórek z jednego arkusza do drugiego.
    Kopiowanie danych musi się odbywać z zachowaniem formatowania i odniesienia do list słownikowych.
    Kopiowanie odbywa się po jednej komórce ponieważ makro musi być uniwersalne i pod parametry w i k, poz i kol_doc wpisywać zadane wartości.
    Przy poniższej operacji trwa to bardzo długo (może być takich operacji select np. 500 wierszy x 200 kolumn x 2).

    Pytanie jak zastąpić select czymś szybszym ?
    Poniżej kod źrodłowy

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Prośba o wsparcie.

    0 4
  • #2 12 Kwi 2016 11:47
    cbrman
    Poziom 27  

    Po pierwsze pozbyć się selectów

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Masz wyłączone odświeżanie ekranu i przeliczanie arkusza? To także przyspiesza operacje.
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    Na końcu kodu włączyć z powrotem.

    Najlepiej by było jakbyś załączył przykładowy plik z układem danych oraz dał cały kod, to może da się jeszcze zastosować inne metody.

    0
  • #3 12 Kwi 2016 12:01
    dwieszopy
    Poziom 9  

    Dzięki za wsparcie.

    Pojawia się błąd na linii
    Arkusz21.Cells(poz, kol_doc).Paste
    z informacją iż Object doesn't suporty this property or method


    linia Arkusz1.Cells(w, kol).Copy przechodzi poprawnie

    0
  • Pomocny post
    #4 12 Kwi 2016 12:14
    JRV
    Specjalista - VBA, Excel

    Jesli tak:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Ponadto czy istnieje Arkusz21 ? Nie nazwa wkladki, tylko kodowa nazwa(widoczna w edytorze VBA)

    0
  • #5 12 Kwi 2016 13:07
    dwieszopy
    Poziom 9  

    Super, ułożenie poleceń w jednej linii zadziałało poprawnie.

    Rozwiązanie znacznie przyśpieszyło, przez zastąpienie select

    Dziękuję bardzo

    0