Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
Przesunięty przez: bodek
09-04-2019, 12:38
Znacząca zmiana prędkości wykonywania makra
Autor Wiadomość
keri85 
Exceloholic


Pomógł: 46 razy
Posty: 101
Wysłany: 09-04-2019, 11:50   Znacząca zmiana prędkości wykonywania makra

Mam plik w którym poprzez dwuklik w komórkę zmieniam jej zaznaczenie wraz z agregacją na dzieci i dziadków.
Używam do tego znaków:
1. "x" komórka zaznaczona,
2. "-" komórka niezaznaczona,
3. "*" mieszane (dotyczy tylko rodzica gdy dzieci są jednocześnie zaznaczone i niezaznaczone).
Zmiana wykonana przez użytkownika (dwuklik) może spowodować jej:
1. odznaczenie jeżeli była zaznaczona
2. zaznaczenie w każdym innym przypadku

I teraz jeżeli zmienię znak niezaznaczony z "-"
Kod:
Dim z_nie As String
    z_nie = "-"

na ""
Kod:
Dim z_nie As String
    z_nie = ""

to makro działa zauważalnie wolniej.

W załączeniu przekazuje przykładowy plik z 2 arkuszami, w obu arkuszach za zmiany odpowiadają identyczne makra różniące się tylko znakiem niezaznaczony.

Największy efekt jest zauważalny po dwukliku w komórkę E2.

Co może być przyczyna aż takiego spowolnienia makra ?

Zmiana prędkości działania makra.xlsm
Pobierz Plik ściągnięto 16 raz(y) 36.09 KB

ID posta: 365696 Skopiuj do schowka
 
 
Artik 



Wersja: Win Office 365
Pomógł: 2647 razy
Posty: 8778
Wysłany: 10-04-2019, 01:10   

Niestety, nie znalazłem powodu. Natomiast znalazłem pewne możliwości przyspieszenia działania.

Drobne korekty w kodzie:
1. Zamiast
Kod:
        Select Case Target.Column
            Case 1
                (...)
            Case 2, 3, 4
                GoTo koniec
            Case Else
                (...)
        End Select
w procedurze Worksheet_BeforeDoubleClick, proponuję
Kod:
        Select Case Target.Column
            Case 1
                (...)
            Case Is > 4
                (...)
        End Select
Nie wpływa to na szybkość wykonania, jedynie upraszcza kod.

2. To już przyspieszy działanie.
Zamiast
Kod:
    Select Case Target.Column
        Case 5    'zaznaczenie wspólnych
            For j = Target.Column To 14
                Cells(ii, j) = znak
            Next
        Case Else
            'zliczenie
            (...)
użyj
Kod:
    Select Case Target.Column
        Case 5    'zaznaczenie wspólnych
            Cells(ii, Target.Column).Resize(, 14 - Target.Column + 1) = znak
        Case Else
            'zliczenie
            (...)
w procedurze zaznacz_pion.

Z obserwacji wynika:
1. opóźnienie powstaje tylko gdy
Kod:
z_nie =""
lub
z_nie = vbNullString
W przypadku innych znaków opóźnienia już nie ma.
2. Jeżeli wypełnione X-ami będą przynajmniej dwie kolumny (pełne, od 2 do 28), to usuwanie X-ów w którejkolwiek z nich nie powoduje opóźnienia (może to Cię naprowadzi na jakiś trop). Dopiero jak jest jedna, to zwalnia.

Jeżeli nie znajdziesz przyczyny, a zależy Ci na tym, by komórki wyglądały na puste zastosuj
Kod:
z_nie =" "

lub tajemniczy znak
Kod:
z_nie = ChrW(8203)

Artik
_________________
Persistence is a virtue in the world of programming.
ID posta: 365768 Skopiuj do schowka
 
 
keri85 
Exceloholic


Pomógł: 46 razy
Posty: 101
Wysłany: 10-04-2019, 10:00   

Dziękuje za zainteresowanie.
Pierwszej korekty w kodzie niestety nie mogę wykorzystać . Makro zostało okrojone aby pokazać działanie na forum ten case jest potrzebny :)

Druga korekta jak najbardziej weszła w życie.

Co do znaku
zmienna
Kod:
Public Const z_nie As String = " "
jest deklarowana w module jako zmienna publiczna i jest używana w innych makrach w związku z czym nie mogę użyć tajemniczego znaku pozostaje przy rozwiązaniu
Kod:
" "
ale
Kod:
vbCr
działa równie szybko.
ID posta: 365774 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe