So aktivieren Sie das Mausrad für ListBox, ComboBox, Frame in VBA
VBA unterstützt kein Mausrad für ListBox, ComboBox, Frame und UserForm. SonVuDevs MouseWheel für VBA löst mit nur 1 .bas-Datei und 2 Zeilen Code und läuft auf Excel, Access, Word, PowerPoint.
Dieser Beitrag ist derzeit nur auf Vietnamesisch und Englisch verfügbar. Englische Version wird angezeigt.
Schreiben Sie ein VBA-Makro in Excel, Access, Word oder PowerPoint und sehen, dass ListBox / ComboBox / Frame mit den Tasten scrollen, aber nicht mit dem Mausrad? Es handelt sich nicht um einen Softwarefehler, sondern um eine Einschränkung von VBA aus der Vergangenheit. SonVuDevs
MouseWheel für VBA löst dieses Problem mit nur 1 .bas-Datei und 2 Codezeilen. Keine MSForms-Bibliothek erforderlich, läuft auf jedem VBA-Host, unterstützt sowohl 64-Bit- als auch 32-Bit-Office.
Warum kann VBA nicht mit dem Mausrad scrollen?
VBA ist nicht .NET oder WinForms – es ist eine alte Programmiersprache, die tief in Office integriert ist. Für Steuerelemente wie ListBox, ComboBox und Frame ist keine Nachrichtenschleife verfügbar, um das Ereignis WM_MOUSEWHEEL abzufangen. Wenn Sie scrollen, sendet Windows diese Nachricht an das übergeordnete Fenster (UserForm), aber VBA leitet sie nicht an das untergeordnete Steuerelement weiter.
Konsequenz: Sie müssen die Bildlaufleiste von Hand ziehen oder die Pfeiltasten verwenden – sehr unpraktisch, wenn die Liste lang ist.
So schalten Sie das Mausrad in VBA ein
- Herunterladen MouseWheel.bas von SonVuDev.
- Importdatei .ba s in das VBA-Projekt (Alt+F11 → Datei → Datei importieren).
- Fügen Sie im Ereignis
UserForm_Initializezwei Zeilen hinzu:Call MouseWheelEnable(Me)Call MouseWheelConfigure(Me, 3, True) - Formular ausführen – Mausrad funktioniert.
Features
- Keine Abhängigkeit von MSForms: Forts Der Rollentyp wird durch Duck-Typing erkannt, es ist keine zusätzliche Referenz erforderlich.
- Unterstützt alle Hosts VBA: Excel, Access, Word, PowerPoint, VB6.
- Unterstützt 64-Bit und 32-Bit: VBA7 (Office 64-Bit) und VBA6 (Office 32-Bit). run.
- Einstellbare Scrollgeschwindigkeit: Verwenden Sie
MouseWheelConfigurezum Einstellen Anzahl der pro Rolle gescrollten Zeilen. PH_1__Selbstheilung: Wenn die Hook-Installation fehlschlägt, versucht das Tool es erneut – kein hängengebliebener Zustand. - Sicheres Aushängen: Beim Verlassen des Steuerelements oder Schließen des Formulars wird der Hook sauber entfernt.
- Optional Diagnose: Aktivieren Sie
EnableDebugoderMWLog, um Aktivitätsprotokolle anzuzeigen. - Plattformfunktionsberichte:
IsWheelSupportedundPlatformNamegeben an, ob das aktuelle System es unterstützt.
Wann sollten Sie es verwenden?
- Enthält die VBA-Formular-ListBox/ComboBox Hunderte davon Zeilen.
- Endbenutzer sind es gewohnt, das Mausrad zu verwenden, möchten keine Bildlaufleisten verwenden.
- Sie möchten UX verbessern von internen Tools ohne Umschreiben in .NET.
Fazit
MouseWheel für VBA ist eine kompakte, abhängigkeitsfreie und einfach zu integrierende Lösung. Wenn Sie VBA schreiben und möchten, dass Ihr Formular mit der Maus scrollbar ist, ist dies das richtige Tool.