Cómo activar la rueda del mouse para ListBox, ComboBox, Frame en VBA
VBA no admite la rueda del mouse para ListBox, ComboBox, Frame y UserForm. MouseWheel para VBA de SonVuDev se resuelve con solo 1 archivo .bas y 2 líneas de código, se ejecuta en Excel, Access, Word y PowerPoint.
Esta publicación solo está disponible en vietnamita e inglés por ahora. Se muestra la versión en inglés.
¿Estás escribiendo una macro VBA en Excel, Access, Word o PowerPoint y ves ListBox / ComboBox / Frame desplazarse con las teclas pero no con la rueda del mouse? No es un error de software, es una limitación de VBA del pasado.
MouseWheel de SonVuDev para VBA resuelve este problema con solo 1 archivo .bas y 2 líneas de código. No necesita la biblioteca MSForms, se ejecuta en cualquier host VBA, admite Office de 64 y 32 bits.
¿Por qué VBA no puede desplazarse con la rueda del mouse?
VBA no es .NET ni WinForms: es un lenguaje de programación antiguo, profundamente integrado en Office. Los controles como ListBox, ComboBox y Frame no tienen un bucle de mensajes disponible para capturar el evento WM_MOUSEWHEEL. Cuando se desplaza, Windows envía ese mensaje a la ventana principal (UserForm), pero VBA no lo reenvía al control secundario.
Consecuencia: debe arrastrar la barra de desplazamiento con la mano o usar las teclas de flecha, lo cual es muy inconveniente cuando la lista es larga.
Cómo activar la rueda del mouse en VBA
- Descargar MouseWheel.bas de SonVuDev.
- Importar archivo .ba s en el proyecto VBA (Alt+F11 → Archivo → Importar archivo).
- En el evento
UserForm_Initialize, agregue 2 líneas:Call MouseWheelEnable(Me)Call MouseWheelConfigure(Me, 3, Verdadero) - Ejecutar formulario: la rueda del mouse está funcionando.
Características
- No depende de MSForms: Cont. El tipo de rol se detecta escribiendo pato, no se necesita referencia adicional.
- Admite todos los hosts VBA: Excel, Access, Word, PowerPoint, VB6.
- Admite 64 bits y 32 bits: VBA7 (Office 64 bits) y VBA6 (Office 32 bits) ambos run.
- Velocidad de desplazamiento ajustable: Use
MouseWheelConfigurepara configurar número de líneas desplazadas por rollo. - Autorreparación: Si falla la instalación del gancho, la herramienta vuelve a intentarlo, sin estado atascado.
- Desenganche seguro: Al salir del control o cerrar el formulario, el gancho se retira limpiamente.
- Opcional diagnóstico: Active
EnableDebugoMWLogpara ver los registros de actividad. - Informes de capacidades de la plataforma:
IsWheelSupportedyPlatformNameindican si el sistema actual lo admite.
¿Cuándo debería usarlo?
- ¿El formulario VBA ListBox/ComboBox contiene cientos de filas.
- Los usuarios finales están acostumbrados a usar la rueda del mouse, no quieren usar barras de desplazamiento.
- Quieres mejorar la UX de herramientas internas sin tener que volver a escribir en .NET.
Conclusion
MouseWheel para VBA es una solución compacta, libre de dependencias y fácil de integrar. Si está escribiendo VBA y desea que su formulario se pueda desplazar con el mouse, esta es la herramienta adecuada.