Clever-Excel-Forum

Normale Version: Code zu langsam / Verbesserungsvorschläge gesucht!
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich habe einen Code in VBA geschrieben, der je beim Öffnen der Datei durchgeführt wird und obwohl er eigentlich sehr simple ist braucht die Datei eeeewig zum Öffnen.

Kann mir jemand dabei helfen den Code etwas schlanker zu gestalten? Ich weiß z.B. dass auf die Select-Anweisungen verzichtet werden kann, bei der Umsetzung hapert es aber noch.

Hier der Code:


Code:
Private Sub Workbook_Open()
'Ggf. gesetzte Filter in den Reitern "Parameteroptimierung" wird entfernt
'Der Zoom für den Reiter "Parameteroptimierung" wird auf 95% eingestellt
Sheets("Parameteroptimierung").Visible = True
 Sheets("Parameteroptimierung").Select
 With ActiveWorkbook.ActiveSheet
            If .FilterMode Then
                .ShowAllData
            End If
            End With
ActiveWindow.Zoom = 95
Sheets("Parameteroptimierung").Visible = False
 
'Ggf. gesetzte Filter in den Reitern "Bestände" wird entfernt
'Der Zoom für den Reiter "Bestände" wird auf 95% eingestellt
Sheets("Bestände").Visible = True
Sheets("Bestände").Select
 With ActiveWorkbook.ActiveSheet
            If .FilterMode Then
                .ShowAllData
            End If
            End With
ActiveWindow.Zoom = 95
 
'Alle Reiter außer Start werden ausgeblendet
 
Sheets("Bestände").Visible = False
Sheets("Disponenten").Visible = False
Sheets("Kommentar Abweichung").Visible = False
Sheets("Arbeitsfortschritte 2019").Visible = False
Sheets("Übersicht Überbestände&VLZ").Visible = False
Sheets("Dispomatrix").Visible = False
Sheets("Datenbasis_Arbeitsfortschritte").Visible = False
 
'Der Reiter "Start" wird aufgerufen und der Zoom auf 95% eingestellt. Zudem wird in Zeile 1 hochgescrollt.
 
    Sheets("Start").Select
    ActiveWindow.ScrollRow = 1
    ActiveWindow.Zoom = 95
   
End Sub

 

Vielen Dank und Grüße
Rob
Hi

Die Zeilen könnten da evtl. schon helfen.

Code:
Private Sub
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlManual
    
Dein Code
    
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
End Sub

Gru Elex
Verzichte in VBA immer auf 'Select' und 'Activate'.

Statt in workbook_Open, verwende:

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.FilterMode Then Sh.ShowAllData
End Sub

Diese Einszeiler:

Code:
Sheets(Array("Bestände", "Disponenten", "Kommentar Abweichung", "Arbeitsfortschritte 2019", "Übersicht Überbestände&VLZ", "Dispomatrix", "Datenbasis_Arbeitsfortschritte")).Visible = False
Ich teste mal aus, danke schonmal :)