AW: "Automatisches Berechnen" beim Öffnen abschalten
21.06.2005 14:49:09
Vliegen
Hallo Nepumuk,
deine Ausführungen zu dieser Frage interessieren mich weil ich gerade über eine ähnliche Fragestellung nachdenke. Daher erlaube ich mir hier mal zwischenzufragen.
Wenn ich das richtig verstanden habe dann läuft beim Öffnen einer Datei die man normal öffnet (also per Explorer oder in Excel Datei öffnen) immer zuerst die Berechnung und dann erst die Makros. Was doch sicherlich dazu führt dass beim Starten großer Datei es recht lange dauert bis der Code des Workbook_Open Ereignisses abgearbeitet wird. Mal angenommen dort steckt eine Anweisung ein bestimmtes Tabellenblatt zu aktivieren dann kann es eine ganze Zeit lang dauern bis dieses Blatt erscheint weil Excel immer erst auf dem Tabellenblatt öffnet das zu letzt verwendet wurde. Im Falle meiner Konstruktion ist das aber unpraktisch :
Um ein Einschalten der Makros zu erzwingen startet die Datei bei aktivierten Makros auf dem korrekten Empfangsblatt. Bei nicht aktivierten Makros aber auf einem anderen Blatt mit einem Vermerk die Makros anzuschalten wobei alle anderen Blätter unsichtbar sind(Code steht in Workbook_BeforeClose der beim Schliessen ausgeführt wird und beim Deaktivieren der Makros). Das ganze klappt wie gesagt gut. Bis auf die Tatsache das immer am beim Schliessen der Datei dieses eine Blatt mit der Fehlermeldung einmal übergangsweise erscheint (aber da die Anwendung gross ist recht lange)und auch am Anfang bis das Workbook_Open Ereignis abgearbeitet wurde.
Nun meine Frage wenn ich das Berechnen erst mal ausschalten könnte ginge es schneller bis das richtige Blatt erscheit oder gibt es da noch andere Mittel und Wege das Fehlermeldungsblatt unsichtbar zu halten wenn die Makros aktiviert wurden.
Den Code aus DieseArbeitsmappe hab ich mal hier kopiert :
'Beim Öffnen der Datei ohne Makros zu aktivieren und (leider auch) beim Verlassen der Datei mit aktivierten Makros
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Feuil As Worksheet
Sheets("ErreureMacros").Visible = xlSheetVisible 'erst Blatt einblenden
Sheets("ErreureMacros").Activate 'dann aktivieren
For Each Feuil In ThisWorkbook.Worksheets 'alle Blätter ausser Fehlermeldungsblatt unsichtbar
If Feuil.Name = "ErreureMacros" Then
Feuil.Visible = xlSheetVisible
Else
Feuil.Visible = xlSheetVeryHidden
End If
Next Feuil
FormImpressum.Show 'Formular mit Autoreninfos anzeigen
'Makro aufrufen um Darstellung des Bildschirmes zuändern
RemettreFormatEcran
'Makro aufrufen um Menuleiste zu normalisieren
Application.CommandBars(1).Reset
'Makro aufrufen um Kontextmenus wieder zugänglich zu machen
RemettreMenuContext
'Einige Bildschirmeinstellungen um ein Verlassen des Fehlermeldungsblattes ohne VBA zu erschweren
With ActiveWindow
.DisplayHeadings = False
.DisplayHorizontalScrollBar = False
.DisplayWorkbookTabs = False
End With
End Sub
'Beim Öffnen der Datei mit aktivierten Makros
Private Sub Workbook_Open()
Dim Feuil As Worksheet
Application.ScreenUpdating = False
'Makroaufrufen um Bildschirmansicht zu ändern (Vollbild) ModifierFormatagesEcrans
'Makro aufrufen um teile der Menuleiste auszublenden und unzugänglich machen
SupprimerMenus
'Begrüssungsformular einblenden
FormSchemaBiogaz.Show
'Alle Tabellenblätter aussser das mit der Fehlermeldung sichtbar machen
For Each Feuil In ThisWorkbook.Worksheets
If Feuil.Name = "ErreureMacros" Then
Feuil.Visible = xlSheetVeryHidden 'Fehlermeldungsblatt unsichtbar
Else
Feuil.Visible = xlSheetVisible 'übrige Blätter sichtbar
End If
Next Feuil
'Starttabellenblatt aktivieren
Worksheets("Feuille_Encodage").Activate
'Makro aufrufen um bestimmte Bildschirmformate abzustellen (Waagerecht Scroll, Spaltenköpfe und Zeilen-, Registerlaschen, ...)
SupprimerFormatEcran
'Makro aufrufen um Kontextmenus unzugänglich zu machen
SupprimerMenuContext
Application.ScreenUpdating = True
End Sub