Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Scrollrow richtig anwenden

Forumthread: Scrollrow richtig anwenden

Scrollrow richtig anwenden
20.10.2017 17:38:00
EasyD
Hallo zusammen
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!
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Scrollrow richtig anwenden
20.10.2017 18:54:58
onur

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
ActiveWindow.ScrollColumn = 233
Else
'... wieder diverses kopieren und einfügen
'die Zeilen ausblenden
ActiveSheet.Rows("233:247").EntireRow.Hidden = True
ActiveWindow.ScrollColumn = 1
End If

Anzeige
AW: Scrollrow richtig anwenden
20.10.2017 19:52:59
EasyD
oh mann... natürlich....
wie einfach!
Dank Dir!
;
Anzeige

Infobox / Tutorial

Scrollrow in Excel VBA effizient nutzen


Schritt-für-Schritt-Anleitung

  1. Togglebutton erstellen: Füge einen Togglebutton in dein Excel-Blatt ein. Du kannst dies über die Entwicklertools unter "Einfügen" tun.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Code für den Togglebutton eingeben: Verwende den folgenden Code als Beispiel, um den Scrollrow zu steuern:

    Private Sub ToggleButton14_Click()
       ToggleButton14.Left = Cells(232, 3).Left
       ToggleButton14.Top = Cells(232, 3).Top
       If ToggleButton14 = True Then
           ToggleButton14.Caption = "Ein"
           ToggleButton14.BackColor = RGB(0, 255, 0)
           ActiveSheet.Rows("233:247").EntireRow.Hidden = False
           ActiveWindow.ScrollRow = 105 ' Setze hier die gewünschte Zeile für die Mitte
       Else
           ActiveSheet.Rows("233:247").EntireRow.Hidden = True
           ActiveWindow.ScrollRow = 3 ' Gehe ganz nach oben
       End If
    End Sub
  4. Anpassen des Codes: Passe die Zeilenangaben (233:247 und die Scrollposition) nach deinen Bedürfnissen an.

  5. Testen: Schließe den VBA-Editor und teste den Togglebutton direkt im Excel-Blatt.


Häufige Fehler und Lösungen

  • Fehler: ActiveWindow.ScrollRow funktioniert nicht
    Lösung: Stelle sicher, dass das aktive Fenster tatsächlich das richtige Arbeitsblatt ist. Manchmal kann der Fokus auf ein anderes Fenster verschoben sein.

  • Fehler: Togglebutton bleibt nicht an der richtigen Position
    Lösung: Überprüfe, ob die Koordinaten für Left und Top korrekt gesetzt sind. Diese sollten zum gewünschten Standort des Buttons passen.


Alternative Methoden

  • Nutzung von ActiveWindow.ScrollIntoView: In einigen Fällen kann es sinnvoll sein, die Methode ScrollIntoView zu verwenden, um eine bestimmte Zelle sichtbar zu machen.

    ActiveWindow.ScrollIntoView Cells(105, 1)
  • Verwendung von SmallScroll: Statt direkt zu scrollen, kannst du auch die Methode SmallScroll verwenden, um schrittweise zu scrollen.

    ActiveWindow.SmallScroll Down:=3 ' Scrollt drei Zeilen nach unten

Praktische Beispiele

Beispiel 1: Togglebutton für mehrere Zeilen
Hier ist ein Beispiel, wie du mehrere Togglebuttons für verschiedene Zeilenbereiche erstellen kannst:

Private Sub ToggleButton1_Click()
    ActiveSheet.Rows("1:10").EntireRow.Hidden = Not ActiveSheet.Rows("1:10").EntireRow.Hidden
    ActiveWindow.ScrollRow = IIf(ActiveSheet.Rows("1:10").EntireRow.Hidden, 1, 5)
End Sub

Beispiel 2: Scroll zu spezifischer Zelle
Wenn du zu einer bestimmten Zelle scrollen möchtest:

ActiveWindow.ScrollRow = ActiveSheet.Range("A20").Row

Tipps für Profis

  • Nutze Application.ScreenUpdating = False, um Flickern beim Scrollen zu vermeiden.

    Application.ScreenUpdating = False
    ' Dein Code hier
    Application.ScreenUpdating = True
  • Experimentiere mit der Kombination von ScrollRow und ScrollColumn, um den gewünschten Bereich optimal im Sichtfeld zu platzieren.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen ScrollRow und ScrollColumn?
ScrollRow steuert, welche Zeile im aktiven Fenster sichtbar ist, während ScrollColumn die sichtbare Spalte steuert.

2. Wie kann ich den Scroll-Zustand nach dem Schließen der Mappe speichern?
Das Speichern des Scroll-Zustands ist nicht direkt möglich, aber du kannst den Status in einer Zelle speichern und beim Öffnen der Mappe wiederherstellen.

3. Funktioniert ScrollRow in allen Excel-Versionen?
Ja, die meisten der genannten Funktionen sind in Excel VBA ab Version 2007 verfügbar. Achte darauf, dass du die richtige Version verwendest.

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