Anzeige
Archiv - Navigation
752to756
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
752to756
752to756
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makroausfüh bei Größenänderung des Excel-Fensters

Makroausfüh bei Größenänderung des Excel-Fensters
16.04.2006 21:11:01
Dieter
Hallo zusammen,
mit dem folgenden VBA-Code im EXCEL-Modul "DieseArbeitsmappe" wird der Zellbereich "A1:E15" im Arbeitsblatt "Tabelle1" optimal durch Zoomen ins Workbook-Fenster eingepasst, wenn man die Größe des Workbook-Fensters durch Ziehen (oder Minimieren/Maximieren) verändert. Dies wird durch das Event "WindowResize" ausgelöst.

Private Sub Workbook_WindowResize(ByVal Wn As Window)
If Tabelle1.CodeName = ActiveSheet.CodeName Then
Range("A1:E15").Select
ActiveWindow.Zoom = True
Range("A1").Select
End If
End Sub

Das Event "WindowResize" funktioniert aber nur bei Größenänderung des Workbook-Fensters innerhalb des Fensters der Excel-Application.
Ist das "innere" Workbook-Fenster maximiert und man verändert die Größe des "äußeren" Fensters von Excel, dann wird das Makro nicht ausgeführt. Aber genau das möchte ich erreichen.
Kennt jemand einen Weg?
Gruß
Dieter

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makroausfüh bei Größenänderung des Excel-Fensters
16.04.2006 21:25:52
Nepumuk
Hallo Dieter,
einfach mit Hilfe eines Timers die Fenstergröße (Application.Width / Application.Height) abfragen.
Gruß
Nepumuk

AW: Makroausfüh bei Größenänderung des Excel-Fens
17.04.2006 11:49:18
Dieter
Hallo Nepumuk,
erst einmal vielen Dank für die superschnelle Antwort!
Die Idee, die Fenstergröße über die beiden Application Eigenschaften abzufragen finde prinzipiell gut, aber: wann soll ich den Timer "einschalten"?
Manuell über einen Button ist keine akzeptable Lösung.
Wenn ich beipielsweise den Timer über das Ereignis "Worksheet_Activate" (z.B. mit Hilfe der Methode "Apllication.Ontime") im Modul "Tabelle1" einschalte und über "Worksheet_Activate" wieder ausschalte, dann "stört" die Laufzeit des Timers das Ausführen von anderen Makros, die ablaufen sollen, während Tabelle1 aktiviert ist.
Suche also weiterhin ein passendes Ereignis, um das Zoom-Makro (oder den Timer) anzustoßen.
Gruß
Dieter
Anzeige
AW: Makroausfüh bei Größenänderung des Excel-Fens
17.04.2006 11:56:25
Nepumuk
Hallo Dieter,
was soll denn im Zoom-Makro passieren? Die OnTime-Methode stört den Ablauf eines anderen Makros keineswegs. So lange dieses läuft, wartet der Timer.
Gruß
Nepumuk

AW: Makroausfüh bei Größenänderung des Excel-Fens
17.04.2006 16:44:21
Dieter
Hallo Nepumuk,
im Prinzip läuft jetzt alles bestens; Codes siehe unten.
Du hast recht, der Timer stört eindeutig NICHT die Laufzeit anderer Makros. Hatte eine Fehlermeldung, die - wie ich eben feststellte - eine andere Ursache hatte.
Das Einzige, was mich noch stört, ist das kurze Aufblinken des Cursors während der Laufzeit im Sekundentakt. Dies habe ich auch nicht mit
"Application.ScreenUpdating = False" bzw. "Application.EnableEvents = False" wegbekommen.
Kann man das irgendwie anders abstellen?
Weiterhin lässt sich das Makro nicht mehr den Entwurfsmodus schalten, wenn man das enpsprechende Icon in Excel anklickt.
Gruß und herzlichen Dank!
Dieter
ClassModul: Tabelle1
Option Explicit
Dim WidthAlt, HeightAlt

Private Sub Worksheet_Activate()
WidthAlt = Application.Width
HeightAlt = Application.Height
Call TimerStart
End Sub


Private Sub TimerStart()
'    Application.ScreenUpdating = False
'    Application.EnableEvents = False
If (Application.Width <> WidthAlt) Or (Application.Height <> HeightAlt) Then
Range("A1:E15").Select
ActiveWindow.Zoom = True
Range("A1").Select
End If
Application.OnTime Now + TimeValue("00:00:01"), "Tabelle1.TimerStart", , True
WidthAlt = Application.Width
HeightAlt = Application.Height
'    Application.EnableEvents = True
'    Application.ScreenUpdating = True
End Sub


Private Sub Worksheet_Deactivate()
Call TimerStop
End Sub


Private Sub TimerStop()
Application.OnTime Now + TimeValue("00:00:01"), "Tabelle1.TimerStart", , False
End Sub

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige