14. januar 2006 - 11:22Der er
10 kommentarer og 1 løsning
Stoppe afspilning af funktion
Jeg har skrevet 5 funktioner i VBA. Funktion1 er ret tidskrævende pga. mange data og beregninger(og sikkert dårlig programmering).
Det irriterer mig derfor, at når jeg anvender en af de 4 andre funktioner, afspilles Funktion1 også, hvilket er meget tungt og tidskrævende.
Er der en metode, hvorpå man kan adskille eller styre, hvornår funktioner - skrevet i VBA - skal afspilles/gennemberegnes? Jeg vil ikke slå ”automatisk beregning fra” som ellers kunne være en løsningsmulighed.
Her den del der skaber problemer rent tidsmæssigt:
Public Function Funktion1(Område As Range, Måned As Byte, År, ISO As String) Dim n, m, i, j As Integer Dim Dato_Var As String Dim Mdr Application.ScreenUpdating = False
n = Område.Rows.Count Mdr = Format(Måned, "00") Dato_Var = År & "-M" & Mdr
For i = n To 2 Step -1 If Not Område(i, 1) = Dato_Var Then Else Exit For End If Next i ...
Public Function Funktion1(Område As Range, Måned As Byte, År, ISO As String) Dim n, m, i, j As Integer Dim Dato_Var As String Dim Mdr Application.ScreenUpdating = False Område1 = Område ' NY n = Område.Rows.Count Mdr = Format(Måned, "00") Dato_Var = År & "-M" & Mdr
For i = n To 2 Step -1 If Not Område1(i, 1) = Dato_Var Then'RETTET Else Exit For End If Next i
For 3922 rækker tog det '3min og 10sek for din kode '45 sek.efter ændring
Det skal være en variant som kabbak skriver. Det skyldes bla. at den skal være klar til at modtage et ukendt antal data. Kabbak læser jo alle celler i området ind i et array af variabel størrelse.
Denne linie fra din kode dim'mer IKKE n, m og i som integer, men som variant. Kun j bliver dim'met som integer. I VBA kan man ikke gøre sådan, men derimod skal alle dim'mes hver for sig. Dim n As Integer, m As Integer, i As Integer, j As Integer
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.