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

Fensterbreite und Höhe nur bis zum Ende

Forumthread: Fensterbreite und Höhe nur bis zum Ende

Fensterbreite und Höhe nur bis zum Ende
16.09.2022 12:00:06
Alex
Hallo Zusammen,
ich brauche eine Lösung für folgendes Problem:
Ich möchte bei der Veränderung der Größe des Excel-Fensters, dass die Tabelle automatisch sich der Fenstergröße anpasst.
Dafür habe ich diesen Code jetzt geschrieben der auch funktioniert:

Private Sub Workbook_WindowResize(ByVal Wn As Window)
Range("a1:n21").Select
ActiveWindow.Zoom = True
Range("a1").Select
End Sub
Jetzt möchte ich zusätzlich nachdem ich die Maus loslasse, dass die Fensterbreite und Höhe nur bis zum Ende der Tabelle a1:n21 geht, oder besser gesagt sich zurückzieht.
Besten Dank!
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fensterbreite und Höhe nur bis zum Ende
16.09.2022 13:09:30
Daniel
Hi
probier mal das, braucht aber noch ein bisschen Feinabstimmung.

Private Sub Workbook_WindowResize(ByVal Wn As Window)
Dim rng1 As Range
Dim rng2 As Range
Set rng1 = Range("a1:n21")
rng1.Select
With ActiveWindow
.Zoom = True
Set rng2 = .VisibleRange
Application.EnableEvents = False
If rng2.Columns.Count > rng1.Columns.Count + 1 Then _
.Width = .Width - Range(Columns(rng1.Columns.Count + 2), Columns(rng2.Columns.Count)).Width * .Zoom / 100
If rng2.Rows.Count > rng1.Rows.Count + 1 Then _
.Height = .Height - Range(Rows(rng1.Rows.Count + 2), Rows(rng2.Rows.Count)).Height * .Zoom / 100
Application.EnableEvents = True
End With
End Sub
Gruß Daniel
Anzeige
AW: Fensterbreite und Höhe nur bis zum Ende
16.09.2022 14:01:57
Alex
Wow, vielen herzlichen Dank für Deine Mühe!
Es funktioniert bestens.
Einziges Problem noch:
Wenn ich in den Vollbildmodus wechsle kommt eine Fehlermeldung, dass die With-Eigenschaft nicht festgelegt werden kann.
Gibt es auch dafür eine Lösung? Das er zb. den Code nicht ausführt wenn man auf Vollbild klickt.
Besten Dank!
Anzeige
AW: Fensterbreite und Höhe nur bis zum Ende
16.09.2022 14:10:28
Daniel
naja, im Vollbildmodus kann man die Breite und Höhe nicht verändern, weil die ja über die Bildschirmgröße vorgegeben sind.
du kannst über ActiveWindow.WindowState ermitteln, ob du im Vollbildmodus oder im normalen Modus bist und darüber dann steuern, ob die Anpassung ausgeführt werden soll oder nicht.
Oder du schaltest den Vollbildmodus im Marko aus, damit du selbst anpassen kannst.
Gruß Daniel
Anzeige
AW: Fensterbreite und Höhe nur bis zum Ende
16.09.2022 15:07:51
Alex
Jawoll, jetzt passt alles! Vielen Dank!
Hier der funktionierende Code:

Private Sub Workbook_WindowResize(ByVal Wn As Window)
Dim rng1 As Range
Dim rng2 As Range
If Application.WindowState  xlMaximized Then
Set rng1 = Range("a1:n21")
rng1.Select
With ActiveWindow
.Zoom = True
Set rng2 = .VisibleRange
Application.EnableEvents = False
If rng2.Columns.Count > rng1.Columns.Count + 1 Then _
.Width = .Width - Range(Columns(rng1.Columns.Count + 2), Columns(rng2.Columns.Count)).Width * .Zoom / 100
If rng2.Rows.Count > rng1.Rows.Count + 1 Then _
.Height = .Height - Range(Rows(rng1.Rows.Count + 2), Rows(rng2.Rows.Count)).Height * .Zoom / 100
Application.EnableEvents = True
Range("a1").Select
End With
Else
Range("a1:n21").Select
ActiveWindow.Zoom = True
Range("a1").Select
End If
End Sub

Anzeige
AW: Fensterbreite und Höhe nur bis zum Ende
16.09.2022 15:17:01
Daniel
nur so als Tip:
wenn du mal die IF-Abfrage richtig platzierst, dann sparst du dir die Doppelprogrammierung von

Range("a1:n21").Select
ActiveWindow.Zoom = True
Range("a1").Select
denn die muss ja immer ausgeführt werden.
Gruß Daniel
AW: Fensterbreite und Höhe nur bis zum Ende
16.09.2022 15:34:19
Alex
Danke für die Korrektur!
Beste Grüße,
Alex
Hier der Code:

Private Sub Workbook_WindowResize(ByVal Wn As Window)
Dim rng1 As Range
Dim rng2 As Range
Set rng1 = Range("a1:n21")
rng1.Select
With ActiveWindow
.Zoom = True
If Application.WindowState  xlMaximized Then
Set rng2 = .VisibleRange
Application.EnableEvents = False
If rng2.Columns.Count > rng1.Columns.Count + 1 Then _
.Width = .Width - Range(Columns(rng1.Columns.Count + 2), Columns(rng2.Columns.Count)).Width * .Zoom / 100
If rng2.Rows.Count > rng1.Rows.Count + 1 Then _
.Height = .Height - Range(Rows(rng1.Rows.Count + 2), Rows(rng2.Rows.Count)).Height * .Zoom / 100
Application.EnableEvents = True
End If
Range("a1").Select
End With
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige