Excel: Worksheet calculate script

Status
Niet open voor verdere reacties.

johhnnyboy

Gebruiker
Lid geworden
18 nov 2007
Berichten
142
Ik heb een Excel bestand gemaakt hierin onderstaande VBA code in workbook_open:

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.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan