2026年11月3日 指示

如何在VBA中为ListBox、ComboBox、Frame打开鼠标滚轮

VBA 不支持 ListBox、ComboBox、Frame 和 UserForm 的鼠标滚轮。 SonVuDev 的 VBA 鼠标轮只需 1 个 .bas 文件和 2 行代码即可解决,可在 Excel、Access、Word、PowerPoint 上运行。

此文章目前仅提供越南语和英语版本。正在显示英语版本。

您是否在 Excel、Access、Word 或 PowerPoint 中编写 VBA 宏并看到 ListBox / ComboBox / Frame 使用按键滚动但不使用鼠标滚轮滚动? 这不是软件错误,而是 VBA 过去的限制。 SonVuDev 的

MouseWheel for VBA 只需 1 .bas 文件和 2 行代码 即可解决此问题。 无需 MSForms 库,可在任何 VBA 主机上运行,​​支持 64 位和 32 位 Office。

为什么 VBA 不能用鼠标滚轮滚动?

VBA 不是 .NET 或 WinForms — 它是一种古老的编程语言,深度集成到 Office 中。 ListBox、ComboBox、Frame 等控件没有可用于捕获 WM_MOUSEWHEEL 事件的消息循环。 当您滚动时,Windows 将该消息发送到父窗口 (UserForm),但 VBA 不会将其转发到子控件。

结果:您必须手动拖动滚动条,或使用箭头键 — 当列表很长时非常不方便。

如何在 VBA 中打开鼠标滚轮

  1. 下载MouseWheel.bas 来自 SonVuDev.
  2. 导入文件 .ba 进入 VBA 项目(Alt+F11 → 文件 → 导入文件)。
  3. 在事件 UserForm_Initialize 中,添加 2 行:
    Call MouseWheelEnable(Me)
    Call MouseWheelConfigure(Me, 3, True)
  4. 运行表单 — 鼠标滚轮正在工作。

功能

什么时候应该使用它?

结论

MouseWheel for VBA 是一个紧凑、无依赖性、易于集成的解决方案。 如果您正在编写 VBA 并希望您的窗体可以用鼠标滚动,那么这是正确的工具。