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

scrollbar scroll-event mausrad

Forumthread: scrollbar scroll-event mausrad

scrollbar scroll-event mausrad
Heiko
Hallo,
kann es sein, dass eine ScrollBar innerhalb einer UserForm sich nicht mit dem Mausrad scrollen läßt, nicht mal mit dem ScrollBar_scroll() event? Läßt sich leider nur mit gedrückter Maustaste verschieben.
Im Gegensatz zum ScrollBar_change() event wird der Code auch bei jedem Einzelschritt ausgeführt und nicht erst beim Loslassen. Nur das Scrollrad scheint tot zu sein...
Sonst gehts ueberall: VBA Editor generell, Slider mit Slider_scroll() ist auch kein Problem, etc...
Oder gibts da ne Lösung?
Vielen Dank im voraus,
Heiko
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
Massiver API-Einsatz
11.05.2012 21:41:32
ransi
HAllo Heiko
Das geht nicht so ohne weiteres.
Mausrad und Scrollbar und Userform das beißt sich.
Die Lösung ist ein ganz massiver API-Einsatz.
Ich glaube Nepumuk hatte mal entsprechenden Code gepostet.
ransi
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Scrollbar in Excel UserForms mit Mausrad nutzen


Schritt-für-Schritt-Anleitung

  1. UserForm erstellen: Öffne den VBA-Editor mit ALT + F11 und füge eine neue UserForm hinzu.

  2. Scrollbar hinzufügen: Ziehe eine ScrollBar aus der Toolbox auf die UserForm.

  3. Code für ScrollEvent hinzufügen: Klicke mit der rechten Maustaste auf die ScrollBar und wähle „Code anzeigen“. Füge den folgenden Code ein:

    Private Sub ScrollBar1_Change()
       ' Aktion, die beim Ändern des Wertes der ScrollBar ausgeführt wird
       MsgBox "Neuer Wert: " & ScrollBar1.Value
    End Sub
  4. Mausrad-ScrollEvent einrichten: Da das Mausrad standardmäßig nicht mit der ScrollBar funktioniert, musst du eine API-Lösung implementieren. Hier ist ein Beispiel, wie du dies tun kannst:

    Private Declare PtrSafe Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
    
    Private Sub UserForm_Initialize()
       ' Initialisiere die UserForm
    End Sub
    
    Private Sub UserForm_Click()
       ' Überwachung des Mausrads
       Do While True
           If GetAsyncKeyState(&H20) <> 0 Then ' Überprüfen, ob das Mausrad bewegt wird
               ScrollBar1.Value = ScrollBar1.Value + 1
               ScrollBar1_Change ' Aufruf des ScrollBar-Events
           ElseIf GetAsyncKeyState(&H21) <> 0 Then
               ScrollBar1.Value = ScrollBar1.Value - 1
               ScrollBar1_Change
           End If
           DoEvents
       Loop
    End Sub
  5. Testen: Schließe den VBA-Editor und teste deine UserForm, um sicherzustellen, dass das Mausrad nun funktioniert.


Häufige Fehler und Lösungen

  • ScrollBar reagiert nicht auf Mausrad: Wenn die ScrollBar nicht reagiert, stelle sicher, dass du die API-Funktion korrekt deklariert hast und dass die Schleife im Click-Event funktioniert.

  • VBA-Fehlermeldungen: Überprüfe, ob alle Variablen korrekt deklariert sind und dass keine Syntaxfehler im Code vorhanden sind.


Alternative Methoden

Falls du die API-Lösung nicht verwenden möchtest, kannst du auch versuchen, einen vba slider zu implementieren, der besser mit dem Mausrad funktioniert. Der Slider reagiert in der Regel besser auf Scroll-Events.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um die Funktionsweise einer ScrollBar in einer UserForm zu demonstrieren:

Private Sub ScrollBar1_Change()
    Label1.Caption = "Wert: " & ScrollBar1.Value
End Sub

In diesem Beispiel wird der Wert der ScrollBar in einem Label angezeigt. Du kannst das Layout und den Code anpassen, um spezifische Anforderungen zu erfüllen.


Tipps für Profis

  • API-Optimierung: Wenn du die API intensiv nutzt, achte darauf, den Code zu optimieren, um die Performance der UserForm zu verbessern. Eine unnötig lange Schleife kann die Anwendung verlangsamen.

  • Ereignisse kombinieren: Überlege, wie du andere Ereignisse (z. B. ScrollBar1_MouseWheel) in deinen Code integrieren kannst, um die Benutzererfahrung zu verbessern.


FAQ: Häufige Fragen

1. Warum funktioniert das Mausrad nicht mit der ScrollBar?
Das Mausrad wird in der Regel nicht automatisch mit der ScrollBar verbunden, was eine manuelle Programmierung erforderlich macht.

2. Was ist der Unterschied zwischen ScrollBar_change und ScrollBar_scroll?
ScrollBar_change wird jedes Mal ausgelöst, wenn der Wert der ScrollBar geändert wird, während ScrollBar_scroll spezifisch für die Benutzerinteraktion mit der ScrollBar ist.

3. Welche Excel-Version benötige ich?
Die beschriebenen Methoden funktionieren in Excel 2010 und späteren Versionen. Achte darauf, dass die API-Deklaration für 64-Bit-Versionen korrekt ist.

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