Scrollrow richtig anwenden
20.10.2017 17:38:00
EasyD
ich versuche mal mein Problem zu schildern. Leider kann ich die Arbeitsmappe nicht hochladen, da vertraulich. Anonymisieren wäre mit sehr viel Arbeit verbunden. Also:
Ich habe ein Blatt mit 20 Togglebuttons. Die Togglebuttons blenden bei Klick einen gewissen Bereich an Zeilen aus oder wieder ein. Insgesamt reden wir hier von 261 Zeilen. Von diesen Zeilen blendet je ein Togglebutton einen definierten Bereich von jeweils 18 Zeilen ein und aus.
Ich möchte, dass dieser Bereich von 18 Zeilen die zu diesem bestimmten Togglebutton "gehören", beim einblenden der Zeilen (Klick auf den Button) immer in der Mitte des Fensters angezeigt werden. Wird der Button wieder zum ausblenden geklickt, soll wieder ganz nach oben gescrollt werden.
Meine Lösung bisher:
Private Sub ToggleButton14_Click()
'Den Button positionieren (andernfalls willkürliches Verschieben des Buttons)
ToggleButton14.Left = Cells(232, 3).Left
ToggleButton14.Top = Cells(232, 3).Top
If ToggleButton14 = True Then
'den Button formatieren
ToggleButton14.Caption = "Ein"
ToggleButton14.BackColor = RGB(0, 255, 0)
'..... jetzt kommt diverses kopieren und einfügen - nicht die Problemstellung
'die Zeilen einblenden
ActiveSheet.Rows("233:247").EntireRow.Hidden = False
Else
'... wieder diverses kopieren und einfügen
'die Zeilen ausblenden
ActiveSheet.Rows("233:247").EntireRow.Hidden = True
End If
'hier das Problem - wenn die Zeilen ausgeblendet sind ganz nach oben (Zeile 3)
'wenn NICHT ausgeblendet, dann in die Mitte des Fensters - Zeile 105 ist NICHT die Lösung, war _
nur ein Versuch
If ActiveSheet.Rows("233:247").EntireRow.Hidden = False Then
With ActiveWindow
.ScrollColumn = 1
.ScrollRow = 105
End With
Else
With ActiveWindow
.ScrollColumn = 1
.ScrollRow = 3
End With
End If
End Sub
Fällt da jemandem etwas eleganteres ein?
Das Problem habe ich wie gesagt mit 20 Togglebuttons im Zeilenbereich 3 bis 264. Wenn alle Zeilen ausgeblendet sind, passt der gesamte Eingabebereich inklusive aller Buttons wunderbar in ein Fenster. Der klick auf den jeweiligen Button soll halt die Zeilen einblenden und genau diese Zeilen in die Mitte des Fensters rücken.
Ideen?
Danke im Voraus!