vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest niedziela, 28 kwietnia 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

Ile cykli pętli zostało wykonanych


otwartyotwarty rozpoczął: zen postów: 5



napisał: zen
postów: 3


umieszczony:
10 lutego 2014
21:38

  
Trebor
Dziękuję za odpowiedź z załączaniem pliku tego miałbym pewien kłopot bo to rzecz wspólna , Wybacz ale obiecałem nie ujawniać .Za co przepraszam .

Twoje odpowiedzi naprawdę są zadowalające i mam już rozeznanie .
Jeszcze raz dzięki .
Pozdrawiam
zen
napisał: Trebor
postów: 1209


umieszczony:
10 lutego 2014
18:45

edytowany:
10 lutego 2014
18:46

  
Samo obliczanie licznika to pomijalny czas. Wyświetlanie na pasku statusu może trochę wydłużać czas działania makra, jednak informacja ile pozostało do końca bywa bezcenna. Licznik i wyświetlanie stosowałbym w pętli zewnętrznej.
50 tysięcy wierszy to nie jest tak dużo pod pewnymi warunkami.
Czy możesz załączyć plik z fikcyjnymi danymi i oczywiście kodem?
napisał: zen
postów: 3


umieszczony:
10 lutego 2014
16:23

  
Trebor dziękuję bardzo za odpowiedź .

Pytanie dodatkowe:
Czy da się określić mniej więcej może procentowo wpływ na czas wykonywania się makra zastosowanie powyższego licznika ?
To są duże pętle po 30 tys może 50 tys główna pętla wykonań do tego pętla w pętli ....więc zależy mi na szybkości wykonania

Pozdrawiam
zen
napisał: Trebor
postów: 1209


umieszczony:
10 lutego 2014
15:52

edytowany:
10 lutego 2014
15:57

  
Przeważnie wstawia się licznik. Oczywiście w pętli for i =1 to 500 nie ma takiej potrzeby gdyż ilość obrotów można odczytać z i.
Prosty licznik to np.
Sub test1()
Dim kom As Range, licznik As Long
For Each kom In Range("A1:C500")
licznik = licznik + 1
Next kom
MsgBox "Pętla wykonała się " & licznik & " razy"
End Sub


Gdy przerwiesz działanie makra, nad słowo "licznik" najedź kursorem myszy. Powinna pokazać się bieżąca wartość zmiennej.

W excelu przy długich czasach działania kodu wyświetla się procent wykonania na pasku statusu. Poniższa pętla pokazuje działanie:
Sub test2()
Dim kom As Range, licznik As Long, oldStatusBar As Boolean

oldStatusBar = Application.DisplayStatusBar 'zapamiętaj stan paska - lewy dolny róg excela
Application.DisplayStatusBar = True ' wyświetlaj dane na pasku

For Each kom In Range("A1:C50000")
licznik = licznik + 1

Application.StatusBar = "Wykonuję " & Round((licznik / Range("A1:C50000").Count) * 100, 0) & " %"
DoEvents 'warto wstawić przy długich pętlach - mocno opóżnia wykonanie kodu
Next kom
Application.StatusBar = False
Application.DisplayStatusBar = oldStatusBar 'przywróć początkowy stan paska

End Sub

napisał: zen
postów: 3


umieszczony:
10 lutego 2014
13:37

  
Witam

Zapuszczam najprostszą pętlę FOR makro długo mieli więc usiłuję zaglądnąć >> co się dzieje ? << ; przerywam działanie makra
i w tym momencie pojawia się pytanie ile cykli pętli zostało wykonanych .
Czy jest to możliwe zrobić tak ad hoc ?
Czy też należy coś przedtem przygotować w kodzie ?
To również by mnie interesowało gdyby nie spowalniało to działania makra...

Czy mogę poprosić o jakieś słowo wyjaśnienia ?

Pozdrawiam
zen


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z