Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1420to1424
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

EnableEvents und ScreenUpdating Excel 2013

EnableEvents und ScreenUpdating Excel 2013
29.04.2015 14:30:14
SteffenS
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

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: EnableEvents und ScreenUpdating Excel 2013
29.04.2015 16:23:51
Herbert
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

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

AW: EnableEvents und ScreenUpdating Excel 2013
29.04.2015 16:37:51
SteffenS
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

Anzeige
AW: EnableEvents und ScreenUpdating Excel 2013
29.04.2015 16:52:39
Herbert
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

AW: EnableEvents und ScreenUpdating Excel 2013
29.04.2015 17:48:49
Daniel
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

Anzeige
AW: EnableEvents und ScreenUpdating Excel 2013
29.04.2015 18:35:54
Nepumuk
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

AW: EnableEvents und ScreenUpdating Excel 2013
29.04.2015 18:58:01
Nepumuk
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

Anzeige
Schwieriges Problem
29.04.2015 20:47:37
SteffenS
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

Anzeige
AW: Schwieriges Problem
30.04.2015 09:18:19
Nepumuk
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

Anzeige
Leider ohne Erfolg
30.04.2015 12:07:26
SteffenS
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

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige