Diskuze: Urychlení procedury

C# .NET .NET (C# a Visual Basic) Urychlení procedury American English version English version

Aktivity (3)
Avatar
Radek Klepáček:27. června 3:14

Ahoj. Pro podbarvení buněk které mají určitou hodnotu používám tuto proceduru. Pokud však procházím cca 7000 řádků, tak se mi zdá pomalá.

Zkusil jsem:

Sub NULA()

    Dim lastrowAA As Long
    lastrowAA = Cells(Rows.Count, 1).End(xlUp).Row
    Set Rng = Range("E2:E" & lastrowAA)
    i = 1
    For counter = 1 To Rng.Rows.Count
        If Rng.Cells(i).Value2 = "0" Then
            Rng.Cells(i).Interior.Color = RGB(255, 255, 0)
        Else

        End If
        i = i + 1
    Next

End Sub

Chci docílit: Šlo by to nějak urychlit?
Děkuji

 
Odpovědět 27. června 3:14
Avatar
Petr Stastny
Redaktor
Avatar
Odpovídá na Radek Klepáček
Petr Stastny:27. června 8:49

Problém by mohl být v tom, že excel pokaždé, když obarvíš buňku, překreslí celou obrazovku. Zkus dát tohle na začátek:

Application.ScreenUpdating = False
Application.EnableEvents = False

A tohle na konec procedury, až úplně dokončíš obarvování:

Application.ScreenUpdating = True
Application.EnableEvents = True
Editováno 27. června 8:49
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 27. června 8:49
Avatar
Odpovídá na Petr Stastny
Radek Klepáček:27. června 8:52

Jejda standard, na který jsem zapomněl.
Jistě že pomohlo. Děkuji

 
Nahoru Odpovědět 27. června 8:52
Avatar
Odpovídá na Radek Klepáček
Matúš Olejník:27. června 9:38

Dobré by bolo označiť odpoveď, ktorá ti pomohla ako riešenie tvojho problému :)

Nahoru Odpovědět  +1 27. června 9:38
/* I am not sure why this works but it fixes the problem */
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.