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.
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
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.
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
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
es läuft schon aber bei größeren Programmen spielt die Zeit schon eine Rollle. Lasse mal die Beiden Makro laufen.
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.
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
ALT + F11, um den VBA-Editor zu öffnen.Einfügen > Modul.Durch die Verwendung von Application.ScreenUpdating = False wird die Bildschirmanzeige eingefroren, sodass keine Änderungen sichtbar sind, während das Makro ausgeführt wird.
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.
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
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.
Select und Activate, um die Ausführung deines Makros effizienter zu gestalten. Stattdessen kannst du direkt auf Objekte zugreifen.ScreenUpdating-Eigenschaft in großen Makros zu einer erheblichen Leistungssteigerung führen kann, da das ständige Aktualisieren des Bildschirms vermieden wird.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.