【问题标题】:VBA Excel Combobox: drop-down list scrolling issueVBA Excel Combobox:下拉列表滚动问题
【发布时间】:2013-11-04 19:43:10
【问题描述】:

我正在运行 32 位 Excel 2010。我创建了多个 ActiveX 控件组合框,它们的下拉列表中都有多个条目。问题是,我不想使用鼠标单击来滚动列表,而是想使用鼠标滚动来滚动列表,但它实际上不起作用。当我在列表内部滚动时,它会向下滚动整个列表而不是其中的内容。那么有人知道如何添加这个功能吗?

【问题讨论】:

标签: excel vba combobox scroll activex


【解决方案1】:

我使用此方法来阻止列表从组合框分离并使用鼠标滚动向下移动工作表。它实际上禁用了鼠标滚动,但您仍然可以移动鼠标来选择一个项目,并在它出现时操作右侧的滚动条。

  1. 选择放置 ActiveX 组合框和工作表的行
  2. 在公式栏中键入一个命名范围,然后按 Enter。例如:“rngJobRoleCombo”
  3. 在开发模式下右击控件,选择“查看代码”
  4. 选择控件的 GotFocus 事件

    Private Sub cboJobRole_GotFocus()
        Me.ScrollArea = Range("rngJobRoleCombos").Address  
    End Sub
    
  5. 选择控件 LostFocus 事件

    Private Sub cboJobRole_LostFocus()
        Me.ScrollArea = ""
    End Sub
    

这会在控件处于焦点时将鼠标滚动限制到工作表的单元格范围地址。

【讨论】:

  • 嗨,尼尔,这几乎就是我要找的。我也在使用一个活动的 X 组合框。我尝试使用您列出的代码,它可以防止在选择组合框时滚动任何内容。页面在组合框上不滚动很好,但组合框仍然不会滚动列表。我的一个盒子叫做 cboSites,所以在 Private Sub 部分中有 cboJobRole 的地方,我只是用 cboSites 替换了它。还有什么我需要做的吗?
  • 我认为代码的问题是您将滚动区域指定为连续。哪个 ComboBox 在一行上,但不是该行的一部分或无论如何附属于该行。如果组合框实际上是单元格中的下拉菜单,那么我认为这会起作用,但是由于它是一个可移动的对象并且可以放置在任何地方,因此定义的“ScrollArea”与要滚动的内容无关。这是我的逻辑,但如果它真的对你有用,那么请让我知道我做错了什么。
  • 向我竖起大拇指。它没有解决滚动组合框的问题,但它确实解决了与无法滚动相关的用户体验问题。 (假设您在解锁滚动区域时非常小心!哈哈。那会导致一些问题)
猜你喜欢
  • 1970-01-01
  • 2020-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-14
相关资源
最近更新 更多