Anzeige
Archiv - Navigation
1896to1900
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
Inhaltsverzeichnis

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!

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!
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

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige