Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

"Echo off" unter VBA

Forumthread: "Echo off" unter VBA

"Echo off" unter VBA
04.06.2002 14:43:52
Matthias
Mit den Excel-4.0-Makros konnte man während der Makroausführung die Aktualisierung der Bildschirmausgabe mit dem Kommando "Echo Off" und "Echo On" aus- und einschalten.

Wer kann mir sagen, wie das mit VBA geht?

Vielen Dank im voraus.

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: "Echo off" unter VBA
04.06.2002 14:51:57
Dieter
Aus der Hilfe

In diesem Beispiel wird gezeigt, wie das Deaktivieren der Bildschirmaktualisierung die Ausführung des Makros beschleunigt. Jede zweite Spalte in Tabelle1 wird ausgeblendet, während die für diese Operation benötigte Zeit gespeichert wird. Beim ersten Schleifendurchlauf werden die Spalten ausgeblendet, die Bildschirmaktualisierung ist aktiviert. Beim zweiten Durchlauf ist die Bildschirmaktualisierung deaktiviert. Wenn Sie das Makro ausführen, haben Sie die Möglichkeit, die beiden in einem Meldungsfeld angezeigten Zeiten zu vergleichen.

Dim AbgelaufeneZeit(2)
Application.ScreenUpdating = True
For i = 1 To 2
If i = 2 Then Application.ScreenUpdating = False
ZeitStart = Time
Worksheets("Tabelle1").Activate
For Each c In ActiveSheet.Columns
If c.Column Mod 2 = 0 Then
c.Hidden = True
End If
Next c
ZeitEnde = Time
AbgelaufeneZeit(i) = (ZeitEnde - ZeitStart) * 24 * 60 * 60
Next i
Application.ScreenUpdating = True
MsgBox "Bei aktivierter Bildschirmaktualisierung benötigte Zeit: " & AbgelaufeneZeit(1) & _

" Sek." & Chr(13) & _
"Bei deaktivierter Bildschirmaktualisierung benötigte Zeit: " & AbgelaufeneZeit(2) & _
" Sek."

Anzeige
Re: "Echo off" unter VBA
04.06.2002 15:14:38
Matthias
Danke für die prompte Hilfe. Funktioniert bestens. Es flimmert zwar noch der Mauszeiger, aber damit kann ich leben.
;
Anzeige

Infobox / Tutorial

Echo Off in VBA: Bildschirmaktualisierung ausschalten


Schritt-für-Schritt-Anleitung

Um die Bildschirmaktualisierung in VBA auszuschalten, kannst Du den Befehl Application.ScreenUpdating verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeinDateiname)" > Einfügen > Modul.

  3. Gib den folgenden Code ein:

    Sub BeispielScreenUpdate()
       Dim ZeitStart As Double, ZeitEnde As Double
       Dim AbgelaufeneZeit(1 To 2) As Double
    
       ' Bildschirmaktualisierung aktivieren
       Application.ScreenUpdating = True
    
       ' Erster Durchlauf mit aktivierter Aktualisierung
       ZeitStart = Timer
       ' Hier kannst Du Deine Operationen einfügen
       Application.ScreenUpdating = True
       ZeitEnde = Timer
       AbgelaufeneZeit(1) = ZeitEnde - ZeitStart
    
       ' Bildschirmaktualisierung deaktivieren
       Application.ScreenUpdating = False
    
       ' Zweiter Durchlauf mit deaktivierter Aktualisierung
       ZeitStart = Timer
       ' Hier kannst Du Deine Operationen einfügen
       Application.ScreenUpdating = False
       ZeitEnde = Timer
       AbgelaufeneZeit(2) = ZeitEnde - ZeitStart
    
       ' Ergebnis anzeigen
       MsgBox "Aktivierte Aktualisierung: " & AbgelaufeneZeit(1) & " Sekunden" & vbCrLf & _
              "Deaktivierte Aktualisierung: " & AbgelaufeneZeit(2) & " Sekunden"
    
       ' Bildschirmaktualisierung wieder aktivieren
       Application.ScreenUpdating = True
    End Sub
  4. Führe das Makro aus: Drücke F5, um das Makro auszuführen und die Zeiten zu vergleichen.


Häufige Fehler und Lösungen

  • Fehler: "Anwendungsdefinierter Fehler"

    • Lösung: Stelle sicher, dass der Befehl Application.ScreenUpdating korrekt geschrieben ist. Achte darauf, dass Du die Aktualisierung nur vor und nach der gewünschten Operation ein- oder ausschaltest.
  • Fehler: Bildschirm flimmert trotzdem

    • Lösung: Wenn der Mauszeiger flimmert, liegt das möglicherweise an anderen Prozessen in Excel. Versuche, alle nicht benötigten Berechnungen und Verknüpfungen zu minimieren.

Alternative Methoden

Eine alternative Methode, um die Bildschirmaktualisierung in Excel VBA zu steuern, ist die Verwendung von @ echo off. Während dieser Befehl nicht direkt in VBA existiert, kannst Du die Logik hinter echo off umsetzen, indem Du die Benutzeroberfläche während der Ausführung verbirgst oder minimierst.


Praktische Beispiele

Hier ist ein Beispiel, wie Du die Bildschirmaktualisierung in einem größeren Kontext verwenden kannst:

Sub DatenVerarbeitung()
    Application.ScreenUpdating = False
    ' Datenverarbeitende Operationen hier
    Application.ScreenUpdating = True
End Sub

In diesem Code wird die Bildschirmaktualisierung während der gesamten Datenverarbeitung deaktiviert, um die Geschwindigkeit zu erhöhen und ein flimmerndes Verhalten zu vermeiden.


Tipps für Profis

  • Nutze Application.Calculation = xlCalculationManual, um die Berechnung in Excel während der Ausführung von Makros zu deaktivieren. Dies kann zusätzlich die Performance verbessern.
  • Verwende DoEvents, um sicherzustellen, dass Excel nicht einfriert, während Du die Bildschirmaktualisierung ausgeschaltet hast.

FAQ: Häufige Fragen

1. Was bewirkt der Befehl Application.ScreenUpdating?
Der Befehl steuert, ob Excel die Bildschirmaktualisierung während der Makroausführung anzeigt oder nicht. Durch das Deaktivieren wird die Ausführung beschleunigt.

2. Gibt es eine Möglichkeit, die Bildschirmaktualisierung für bestimmte Bereiche auszuschalten?
Nein, die Bildschirmaktualisierung gilt immer für das gesamte Excel-Fenster. Du kannst jedoch spezifische Operationen innerhalb eines Makros steuern, um die Performance zu verbessern.

3. Wie kann ich sicherstellen, dass die Bildschirmaktualisierung am Ende meines Makros wieder aktiviert ist?
Setze Application.ScreenUpdating = True am Ende Deines Makros, um sicherzustellen, dass die Aktualisierung wieder aktiviert wird, auch wenn ein Fehler auftritt. Es ist ratsam, dies in einem Finally-Block oder mit On Error zu kombinieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige