EnableEvents und ScreenUpdating Excel 2013

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: EnableEvents und ScreenUpdating Excel 2013
von: SteffenS
Geschrieben am: 29.04.2015 14:30:14

Hallo Zusammen,
ich habe ein sehr umfangreiches Projekt welches aus Mehreren Mappen und Arbeitsblättern besteht. Um dieses Projekt entsprechend besser handeln zu können, bestimmten Importe zu ermöglichen sind eine Vielzahl an Makros integriert.
Damit bei der Laufzeit sich der Bildschirm ruhig verhält habe ich ein Makro erstellt, was alles deaktiviert bzw. am Ende wieder aktiviert.

Sub aenderungen_ein_aus(art As Boolean)
'Aenderungen ein-ausschalten
Application.EnableEvents = art
Application.DisplayAlerts = art
If art = True Then
    Application.Calculation = xlCalculationAutomatic
    Application.Cursor = xlDefault
    Application.EnableCancelKey = xlInterrupt
Else
    Application.Cursor = xlWait
    Application.Calculation = xlCalculationManual
    Application.EnableCancelKey = xlDisabled
End If
Application.ScreenUpdating = art
End Sub
Dieses funktioniert bis Excel 2010 auch einwandfrei. Ab Excel 2013 funktioniert dann die Option Application.ScreenUpdating aber scheinbar nicht mehr (richtig).
Durch langes probieren habe ich nun herausgefunden, dass es an der Option Application.EnableEvents liegt.
Nehme ich diese heraus, so funktioniert es.
Das Problem ist nur dass ich einige Arbeitsblätter habe, wo ich abhängig von der Eingabe bestimmte andere Markos starte.
Diese sollen natürlich nicht gestartet werden, wenn bestimmte globale Aktionen durchgeführt werden. Aus diesem Grund setze ich Application.EnableEvents auch auf False.
Habt ihr eine Idee was sich a Excel 2013 geändert hat und wie ich mein Problem beheben kann?
Danke Euch schon mal.
VG
Steffen Schmerler

Bild

Betrifft: AW: EnableEvents und ScreenUpdating Excel 2013
von: Herbert Grom
Geschrieben am: 29.04.2015 16:23:51
Hallo Steffen,
Dein Makro verstehe ich nicht ganz, vielleicht kannst Du es mir mal erklären, dann kann ich sehen, ob ich Dir helfen kann.
Mein VBA (2013) erkennt z. B. diese Zeile nicht als Makro: "Sub aenderungen_ein_aus(art As Boolean)"
Dann fehlt unten das zweite "Application.EnableEvents = art", jedenfalls nach meinem Verständnis.
Servus

Bild

Betrifft: AW: EnableEvents und ScreenUpdating Excel 2013
von: Rudi Maintaire
Geschrieben am: 29.04.2015 16:31:13
Hallo Herbert,
das ist das altbekannte 'GetMoreSpeed(Modus As Boolean)' oder auch 'GMS(Modus As Boolean)'.
Gruß
Rudi

Bild

Betrifft: AW: EnableEvents und ScreenUpdating Excel 2013
von: SteffenS
Geschrieben am: 29.04.2015 16:37:51
Hallo,
genau das stimmt. Die Variable art übergebe ich immer aus einem anderen Makro.
Habt ihr noch eine Idee wie ich mein Problem lösen kann?
MfG
Steffen Schmerler

Bild

Betrifft: AW: EnableEvents und ScreenUpdating Excel 2013
von: Herbert Grom
Geschrieben am: 29.04.2015 16:52:39
Hallo Steffen,
wenn Du die 3 "Application.EnableEvents, Application.DisplayAlerts, Application.ScreenUpdating auf "false" setzt, dann musst Du Sie am Prozedurende auch wieder auf "true" setzen! Oder passiert das wieder in der anderen Procedur?
Servus

Bild

Betrifft: AW: EnableEvents und ScreenUpdating Excel 2013
von: Daniel
Geschrieben am: 29.04.2015 17:48:49
Hi
bis Excel 2010 war Excel so aufgebaut:
Es gibt eine Excel-Application und alle Exceldateien laufen innerhalb dieser Application
ab Excel 2013 gibt es diese "umhüllende" Excelapplication nicht mehr, sondern jede geöffnete Datei ist auch gleichzeitig seine eigene Application (ist zumindest optisch so).
In wie weit das jetzt Auswirkungen auf Einstellungen hat, die für die Application gültig sind, kann ich dir aber nicht sagen.
Gruß Daniel

Bild

Betrifft: AW: EnableEvents und ScreenUpdating Excel 2013
von: Nepumuk
Geschrieben am: 29.04.2015 18:35:54
Hallo Daniel,
es ist trotzdem die selbe Application.
1. Die Hwnd der Application ist identisch. Das könnte nicht sein wenn es verschiedene Fenster wären.
2. Du findest nur einen Prozess im Taskmanager.
Ich selbst kann das Phänomen auch nicht nachvollziehen.
Gruß
Nepumuk

Bild

Betrifft: AW: EnableEvents und ScreenUpdating Excel 2013
von: Luschi
Geschrieben am: 29.04.2015 18:41:49
Hallo Nepumuk,
eine Beschreibung der Excel-2013-Fensterverwaltung findest Du hier:
http://www.excel-ticker.de/vergleich-der-fensterverwaltung-zwischen-office-2010-und-office-2013/
Gruß von Luschi
aus klein-Paris

Bild

Betrifft: AW: EnableEvents und ScreenUpdating Excel 2013
von: Nepumuk
Geschrieben am: 29.04.2015 18:58:01
Hallo Luschi,
das ist mir auch schon aufgefallen, hat aber mit dem "Problem" nichts zu tun. Kannst du auch ganz einfach prüfen. Öffne 2 leere Mappen in der ersten:

Public Sub test()
    Application.ScreenUpdating = False
    Application.Run "Mappe2!Modul1.Anzeigen"
End Sub

In der zweiten:
Public Sub Anzeigen()
    MsgBox Application.ScreenUpdating
End Sub

Es wird wie erwartet False angezeigt.
Gruß
Nepumuk

Bild

Betrifft: Schwieriges Problem
von: SteffenS
Geschrieben am: 29.04.2015 20:47:37
Hallo,
danke erstmal für die vielen Rückmeldungen. Ich habe jetzt weiter probiert und wenn ich mir während des Codes die Eigenschaft von Application.Screenupdating anschauen so ist diese immer korrekt False.
Ich habe jetzt versucht alle unnötigen selects etc. herauszunehmen stoße aber mit folgendem Makro an meine Grenzen. Damit ich die Einstellung vornehmen kann, muss ich das Fenster aktivieren und dann zuckt der Bildschirm ist trotz gesetzter Option .

Sub blaetter_rucksetzen(art As Long)
'art: 1=Überschriften, Tabellenreiten etc ein, 2=Überschriften, Tabellenreiten etc aus
'Alle Blätter zurückscrollen
 Dim wkb As Workbook
 Dim wks As Worksheet
   For Each wkb In Workbooks
   'Mappe aktivieren
   wkb.Activate
   'Prüfung, ob Fenster eingeblendet ist - einblenden
   If Windows(wkb.Name).Visible = False Then Windows(wkb.Name).Visible = True
   If TabelleVorhanden(nleer, wkb) = True And Windows(wkb.Name).Visible = True Then
      For Each wks In wkb.Worksheets
         If wks.Visible = xlSheetVisible Then
            wks.Select
            ActiveWindow.ScrollRow = 1
            ActiveWindow.ScrollColumn = 1
            If art = 1 Then
                ActiveWindow.DisplayWorkbookTabs = True
                ActiveWindow.DisplayHeadings = True
            Else
                ActiveWindow.DisplayWorkbookTabs = False
                ActiveWindow.DisplayHeadings = False
            End If
            wks.DisplayAutomaticPageBreaks = False
            wks.Range("A1").Select
          End If
      Next wks
   End If
   Next wkb
End Sub
Habt ihr noch eine Idee?
Danke Euch schon mal.
VG
Steffen Schmerler

Bild

Betrifft: AW: Schwieriges Problem
von: Nepumuk
Geschrieben am: 30.04.2015 09:18:19
Hallo,
teste mal:

Public Sub blaetter_rucksetzen(art As Long)
    
    'art: 1=Überschriften, Tabellenreiten etc ein, 2=Überschriften, Tabellenreiten etc aus
    
    'Alle Blätter zurückscrollen
    Dim wkb As Workbook
    Dim wks As Worksheet
    
    For Each wkb In Workbooks
        
        With wkb.Windows(1)
            
            'Fenster - einblenden
            .Visible = True
            
            If art = 1 Then
                .DisplayWorkbookTabs = True
                .DisplayHeadings = True
            Else
                .DisplayWorkbookTabs = False
                .DisplayHeadings = False
            End If
        End With
        
        If TabelleVorhanden(nleer, wkb) Then
            For Each wks In wkb.Worksheets
                If wks.Visible = xlSheetVisible Then
                    With wks
                        .DisplayAutomaticPageBreaks = False
                        With .Cells(1, 1)
                            .Copy
                            .PasteSpecial Paste:=xlPasteAll
                        End With
                    End With
                End If
            Next wks
        End If
    Next wkb
    Application.CutCopyMode = 0
End Sub

Gruß
Nepumuk

Bild

Betrifft: Leider ohne Erfolg
von: SteffenS
Geschrieben am: 30.04.2015 12:07:26
Hallo,
hab es getestet, leider ist das Verhalten unverändert.
Es liegt dies an .Visible = True
Aber wie soll ich dies umgehen, da ich sofern Mappen nicht benötigt werden immer ausblende?
VG Steffen

Bild

Betrifft: AW: Leider ohne Erfolg
von: Nepumuk
Geschrieben am: 30.04.2015 12:10:25
Hallo,
dann musst du dich für irgendwas entscheiden.
Gruß
Nepumuk

 Bild

Beiträge aus den Excel-Beispielen zum Thema "PW-geschützte Internetseite öffnen + Datenimport"