johhnnyboy
Gebruiker
- Lid geworden
- 18 nov 2007
- Berichten
- 142
Ik heb een Excel bestand gemaakt hierin onderstaande VBA code in workbook_open:
Het idee is dat gebruiker altijd naar de laatste informatie zit te kijken. Dit gaat op zich prima.
En een aparte macro verder gemaakt die te activeren is via CTRL+SHFT+V om de berekening van tabbladen te wijzigen:
Deze wordt gebruikt wanneer de data tabbladen zijn geupdate.
Dit werkt allemaal wel, maar het moment geduld waarom gevraagd wordt duurt wel erg lang. Ongeveer 5 minuten.
Daarbij worden bepaalde calculaties op het tabblad "R -" die verwijzen naar "CALC"- tabbladen eerder in het bestand niet meer bijgewerkt.
Heeft iemand suggesties om het te versnellen en te verbeteren?
Qua opbouw nog even:
- Er zijn data tabbladen die harde data bevatten
- De "CALC"-tabbladen halen deze ruwe data op via INDEX / VERGELIJKEN. Calculatie kan na eenmalig uit staan, omdat de informatie niet wijzigt en de gebruiker niet op deze tabbladen werkt.
- De "R -"-tabbladen zijn vervolgens de rapportages die informatie van "CALC" ophalen en dit eventueel bewerken of optellen enz. Vandaar dat calculatie voor deze tabbladen altijd aan moet staan.
Code:
Private Sub Workbook_Open()
Dim Ws As Worksheet
Dim text As String
Dim myMSG As String
myString = "Bestand wordt geopend. Een moment geduld aub..."
Application.StatusBar = myString
text = "Berekenen van calculatie tabbladen is uitgeschakeld. Wijzig met CTRL+SHFT+V"
Application.ScreenUpdating = False
For Each Ws In ThisWorkbook.Worksheets
If Left(Ws.Name, 4) = "CALC" Or Left(Ws.Name, 4) = "DATA" Or Left(Ws.Name, 8) = "C - DATA" Then
Ws.Calculate
Ws.EnableCalculation = False
End If
Next Ws
For Each Ws In ThisWorkbook.Worksheets
If Left(Ws.Name, 3) = "R -" Or Left(Ws.Name, 4) = "RM -" Then
Ws.Calculate
Ws.EnableCalculation = True
End If
Next Ws
Application.ScreenUpdating = True
Application.StatusBar = False
End Sub
Het idee is dat gebruiker altijd naar de laatste informatie zit te kijken. Dit gaat op zich prima.
En een aparte macro verder gemaakt die te activeren is via CTRL+SHFT+V om de berekening van tabbladen te wijzigen:
Code:
Sub ToggleCalculation()
Dim Ws As Worksheet
Dim text As String
Dim change As Boolean
Dim myMSG As String
myString = "Macro wordt uitgevoerd om de status van het berekenen van tabbladen aan te passen. Een moment geduld aub..."
Application.StatusBar = myString
Application.ScreenUpdating = False
For Each Ws In ThisWorkbook.Worksheets
If Left(Ws.Name, 4) = "CALC" Or Left(Ws.Name, 4) = "DATA" Or Left(Ws.Name, 8) = "C - DATA" Then
If Ws.EnableCalculation = True Then
Ws.Calculate
Ws.EnableCalculation = False
change = False
Else
Ws.EnableCalculation = True
change = True
End If
End If
Next Ws
For Each Ws In ThisWorkbook.Worksheets
If Left(Ws.Name, 3) = "R -" Or Left(Ws.Name, 4) = "RM -" Then
If change = False Then
text = "Berekenen van calculatie tabbladen is uitgeschakeld. Wijzig met CTRL+SHFT+V"
Else
text = ""
End If
Ws.Range("A1").Value = text
End If
Next Ws
Application.ScreenUpdating = True
Application.StatusBar = False
End Sub
Deze wordt gebruikt wanneer de data tabbladen zijn geupdate.
Dit werkt allemaal wel, maar het moment geduld waarom gevraagd wordt duurt wel erg lang. Ongeveer 5 minuten.
Daarbij worden bepaalde calculaties op het tabblad "R -" die verwijzen naar "CALC"- tabbladen eerder in het bestand niet meer bijgewerkt.
Heeft iemand suggesties om het te versnellen en te verbeteren?
Qua opbouw nog even:
- Er zijn data tabbladen die harde data bevatten
- De "CALC"-tabbladen halen deze ruwe data op via INDEX / VERGELIJKEN. Calculatie kan na eenmalig uit staan, omdat de informatie niet wijzigt en de gebruiker niet op deze tabbladen werkt.
- De "R -"-tabbladen zijn vervolgens de rapportages die informatie van "CALC" ophalen en dit eventueel bewerken of optellen enz. Vandaar dat calculatie voor deze tabbladen altijd aan moet staan.