07. oktober 2010 - 10:03Der er
10 kommentarer og 1 løsning
Dårlig performance på VBA kode til at skjule rækker og kolonner
Hej eksperter
Jeg har en VBA kode der skjuler rækker og kolonner med værdien 0 eller blank i, i et excel regneark (Excel 2007):
Sub test()
Dim intRække As Integer, intKol As Integer
For Række = 77 To 89 If Range("C" & Række) = "" Or Range("C" & Række) = 0 Then Rows(Række).EntireRow.Hidden = True Next For kol = 4 To 33 If Cells(8, kol) = "" Or Cells(8, kol) = 0 Then Cells(8, kol).EntireColumn.Hidden = True Next End Sub
Men jeg syntes at denn VBA er ret lang tid om at køre/udføres (ca 30 sekunder)! Er er nogen der kan give optimeringsforlag til den? Den er en del af en noget længere VBA kode, og derfor er udførelsestiden lidt kritisk i dette tilfælde.
Jeg er stadig rimelig nybegynder i VBA, så venligst skriv noget forklaring til jeres forslag.
Jeg har faktisk sat Application.ScreenUpdating = False på. Det hjælper lidt på tiden, men jeg syntes stadig den er lidt langsom. Men det kan godt være at der ikke er noget at gøre ved det, alt det simpelthen bare er en tidskrævende opgave....
Det er desværre en Excel 2007-ting. Den beregner en række og lægger resultatet op i rygsækken, beregner så næste række og lægger resultatet op i rygsækken, osv. osv.
Sub Skjul() Application.ScreenUpdating = False Application.Calculation = xlManual Dim rng As Range For Each c In Range("C77:C89") If c = 0 Or c = "" Then If rng Is Nothing Then Set rng = c Else Set rng = Application.Union(rng, c) End If End If Next rng.EntireRow.Hidden = True
Set rng = Nothing
For Each c In Range("D8:AG8") If c = 0 Or c = "" Then If rng Is Nothing Then Set rng = c Else Set rng = Application.Union(rng, c) End If End If Next rng.EntireColumn.Hidden = True Set rng = Nothing Application.Calculation = xlAutomatic Application.ScreenUpdating = True End Sub
Fik tilsendt filen direkte og konkluderede at der ikke var noget i vejen med hastigheden på min Pc - med den bestående kode.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.