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

Bildschirmanzeige einfrieren

Forumthread: Bildschirmanzeige einfrieren

Bildschirmanzeige einfrieren
25.05.2003 11:04:15
Hans Jürgen
Kann ich während der Ausführung eines mit dem Makro-Recorder aufgezeichneten Makros, das jeweils in die Ecken des Sheets springt, die Bildschirmanzeige "einfrieren"?
Das Makro soll ausserhalb des sichtbaren Bildschirms seine Aufgaben erledigen und und der Cursor soll stehen bleiben, wo er beim Start des Makros stand. Am Ende evtl. ein "Refresh", aber kein Hüpfen der Anzeige während der Ausführung.

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Bildschirmanzeige einfrieren
25.05.2003 11:07:07
Georg_Zi

Hallo Hans Jürgen

ein Hallo zu Beginn und ein Gruß am Ende läst den Beitrag doch gleich viel freundlicher aussehen. Auch wenn Du den Beitrag am Computer eingibst sitzen an der anderen Seite doch Leute und keine Maschinen die Deine Frage beantworten und da sollte Zeit für die paar Worte doch vorhanden sein.

In VBA kannst Du zu 99% auf Select; Activate und ähnliche Befehle verzichten. Das mit dem Recorder aufgezeihnete NMakro muß noch bereibnigt werden.


Ein behelf

Bildschirmaktualsierung, Makro laufen lassen ohne Anzeige
damit die Ausführung des Makros nicht angezeigt wird, kann man vor den Code schreiben
application.screenupdating = False im Hintergrund ohne Anzeige
Man darf dann nur nicht vergessen, dieses wieder auf True zu setzen.
Generell sollte man aber alles mit Activate und Select vermeiden


Gruß Hajo

Der Code wurde getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Zur Zeit ist die automatische E-Mailbenachrichtigung abgeschaltet. Damit ist es dem Zufall überlassen, ob ich auf Rückfragen antworte.
Ich habe keine Lust in gewissen Abständen das Forum nach meinen Beiträgen zu durchsuchen, um zu sehen ob Rückfragen gibt.


Anzeige
Application.Screenupdating = False....
25.05.2003 11:08:45
Ramses

Hallo

Ein kleiner Gruss, wie "Guten Morgen Forum" o.s.ä., lässt DEINE Frage gleich viel freundlicher erscheinen und erhöht die Bereitschaft darauf zu antworten ;-)


... und mit

True

wieder einschalten

Gruss Rainer

Re: Guten Morgen an alle!
25.05.2003 11:20:55
Hans Jürgen

Sorry, habe ich natürlich vergessen: Guten Morgen an alle im Forum!
Und: vielen Dank für die prompten Antworten und Lösungen - eine Responsezeit von 4 Minuten habe ich noch in keinem Forum gefunden.
Deswegen habe ich wohl auch den guten Morgen vergessen, da in den anderen Foren die Antworten dann meistens erst nachts um 23:00 Uhr geschrieben werden - und dann könnte man den Spruch leicht als Beleidigung auffassen.
Aber nochmal: großes Lob an Initiator und Teilnehmer.

Anzeige
Danke: Bildschirmanzeige einfrieren
25.05.2003 11:59:47
Hans Jürgen

Hallo Freunde,
die Lösung mit application.screenupdating = False / True funktioniert einwandfrei.
@Hajo: bin ziemlicher Anfänger, was meinst Du mit Verzichten auf Select und Activate? Vielleicht beschreibe ich doch mal meine Problemstellung, die man evtl. ja auch leichter lösen könnte:
In Spalte Lx steht die Formel =WENN($Bx=$Bx+1;"";$Bx) (mit x meine ich die Zeile und da steht natür lich nicht x und x+1, sondern z.B. 10 und 11). D.h. ich schaue, ob in Spalte B eine Änderung eintritt und wenn ja, dann schreibe ich in die letzte Zeile, bevor sich vorne was ändert, den Wert aus Spalte B. Wenn ich in dieses Sheet eine Zeile einfügen oder löschen will, geht die Formel in Spalte L kaputt, da dann nicht mehr Zeile x und x+1, sondern x und x+2 verglichen werden. Folglich füge ich Zeile ein, Kopiere die vorhergehende Zeile und dann kopiere ich in Spalte L die oberste Formel runter bis ans Ende. Damit sind die Formeln wieder korrekt. Ich will vermeiden, dass die Anzeige flackert und möchte am Ende auch wieder da stehen, wo ich begonnen habe.

Sub ZeileEinfügen()
'
' ZeileEinfügen Makro
' Makro am 22.05.2003 von Hans Jürgen aufgezeichnet
'
' Tastenkombination: Strg+k
'
Dim ac As Range
Application.ScreenUpdating = False
Set ac = ActiveCell
ac.Select
ActiveSheet.Unprotect
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Copy
Selection.Insert Shift:=xlDown
Range("L3").Select
ActiveCell.FormulaR1C1 = "=IF(RC2=R[1]C2,"""",RC2)"
Range("M3").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-11]=R[1]C[-11],"""",RC[-3])"
Range("L3:M3").Select
Application.CutCopyMode = False
Selection.Copy
Range("L4").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
ActiveCell.Offset(0, -3).Range("A1").Select
Range("A4").Select
Application.CutCopyMode = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
ac.Select
Application.ScreenUpdating = True
End Sub

Das Makro funktioniert so, also kein dringender Handlungsbedarf. Würde mich nur interessieren, ob es durch Umstellung der Formeln in Spalte L z.B. einfacher geht.

Gruß
Hans Jürgen

Anzeige
Re: Danke: Bildschirmanzeige einfrieren
25.05.2003 12:52:04
Georg_Zi

Hallo Hans Jürgen

es läuft schon aber bei größeren Programmen spielt die Zeit schon eine Rollle. Lasse mal die Beiden Makro laufen.

Gruß Hajo

Der Code wurde getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Zur Zeit ist die automatische E-Mailbenachrichtigung abgeschaltet. Damit ist es dem Zufall überlassen, ob ich auf Rückfragen antworte.
Ich habe keine Lust in gewissen Abständen das Forum nach meinen Beiträgen zu durchsuchen, um zu sehen ob Rückfragen gibt.

Anzeige
;
Anzeige

Infobox / Tutorial

Bildschirmanzeige einfrieren in Excel


Schritt-für-Schritt-Anleitung

Um die Bildschirmanzeige in Excel einzufrieren, während ein Makro ausgeführt wird, kannst du den folgenden VBA-Code verwenden:

Sub BeispielMakro()
    Application.ScreenUpdating = False ' Bildschirmaktualisierung aus
    ' Deine Makro-Anweisungen hier
    Application.ScreenUpdating = True ' Bildschirmaktualisierung wieder an
End Sub
  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul über Einfügen > Modul.
  3. Füge den obigen Code in das Modul ein.
  4. Ersetze die Kommentarzeile mit den spezifischen Makro-Anweisungen, die du ausführen möchtest.
  5. Schließe den VBA-Editor und führe das Makro aus.

Durch die Verwendung von Application.ScreenUpdating = False wird die Bildschirmanzeige eingefroren, sodass keine Änderungen sichtbar sind, während das Makro ausgeführt wird.


Häufige Fehler und Lösungen

Fehler: Das Makro funktioniert nicht, und die Anzeige flackert trotzdem.

Lösung: Stelle sicher, dass du Application.ScreenUpdating = False vor den Makro-Anweisungen und Application.ScreenUpdating = True nach den Anweisungen platzierst. Dies ist wichtig, um die Bildschirmanzeige richtig einzufrieren.


Alternative Methoden

Eine andere Möglichkeit, die Bildschirmanzeige während der Ausführung eines Makros anzuhalten, besteht darin, die Verwendung der Tastenkombination Strg + K (oder eine andere von dir gewählte Kombination) zu implementieren. Du kannst diese Tastenkombination im Makro definieren:

Sub BeispielMakro()
    Application.OnKey "^k", "MakroAusführen" ' Strg + K als Tastenkombination
End Sub

Sub MakroAusführen()
    Application.ScreenUpdating = False
    ' Deine Makro-Anweisungen hier
    Application.ScreenUpdating = True
End Sub

Praktische Beispiele

Hier ist ein Beispiel, wie du das Einfrieren des Bildschirms in deinem bestehenden Makro umsetzen kannst:

Sub ZeileEinfügen()
    Dim ac As Range
    Application.ScreenUpdating = False
    Set ac = ActiveCell
    ActiveSheet.Unprotect

    ' Füge hier deine Zeilenoperationen ein

    Application.ScreenUpdating = True
    ac.Select
End Sub

In diesem Beispiel wird die Bildschirmanzeige eingefroren, während die Zeilenoperationen durchgeführt werden, und am Ende wird die Anzeige wieder aktiviert.


Tipps für Profis

  • Vermeide die Verwendung von Select und Activate, um die Ausführung deines Makros effizienter zu gestalten. Stattdessen kannst du direkt auf Objekte zugreifen.
  • Teste deine Makros regelmäßig, um sicherzustellen, dass sie wie gewünscht funktionieren, besonders nach Änderungen.
  • Behalte im Hinterkopf, dass die ScreenUpdating-Eigenschaft in großen Makros zu einer erheblichen Leistungssteigerung führen kann, da das ständige Aktualisieren des Bildschirms vermieden wird.

FAQ: Häufige Fragen

1. Frage
Wie kann ich die Bildschirmaktualisierung wieder aktivieren, wenn mein Makro fehlschlägt?
Antwort: Stelle sicher, dass du immer Application.ScreenUpdating = True am Ende deines Makros verwendest. Du kannst auch eine Fehlerbehandlungsroutine hinzufügen, um sicherzustellen, dass die Aktualisierung immer aktiviert wird.

2. Frage
Gibt es eine Tastenkombination, um die Bildschirmaktualisierung schnell zu steuern?
Antwort: Ja, du kannst selbst eine Tastenkombination definieren, wie im Abschnitt "Alternative Methoden" beschrieben. Dies ermöglicht dir, dein Makro schnell auszuführen, während du die Bildschirmaktualisierung kontrollierst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige