【问题标题】:Get value of the highlighted item in a combobox dropdown list? Excel VBA获取组合框下拉列表中突出显示项的值? Excel VBA
【发布时间】:2014-04-06 12:37:09
【问题描述】:

我的表单上组合框的鼠标悬停事件触发标签变为可见并显示当前选定组合框值的详细信息。当用户单击向下箭头以显示可供选择的组合框列表项时,我希望标签使用下拉列表中当前突出显示的项目的详细信息进行更新,而不必实际选择它作为组合框值。

换句话说,当用户将鼠标移到项目上并且突出显示的项目发生变化时,我希望标签中的详细信息针对突出显示的值进行更新。

到目前为止,我还没有找到有关如何执行此操作的任何信息。 Excel 显然知道哪个项目被突出显示,但是如何以编程方式访问这些信息却让我望而却步。

有什么想法吗?

【问题讨论】:

  • 这个组合框是控件还是数据验证生成的列表?

标签: excel combobox


【解决方案1】:

如果组合框是一个控件,那么您可以使用 MouseMove 事件来获取当前突出显示的项目。

Private Sub ComboBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If ComboBox1.TopIndex > -1 Then
        Dim curIndex As Integer
        curIndex = ComboBox1.TopIndex + Application.WorksheetFunction.RoundDown(Y / 13.5, 0)
        curValue = ComboBox1.List(curIndex)
    End If
End Sub

然后显示工具提示。
注意:根据我的测试,13.5 是下拉菜单中项目的高度...

【讨论】:

  • 我在我的问题中发布了“鼠标悬停”,但我想说的是“鼠标移动”。我已经为此使用了 mousemove 事件。一旦事件触发,我可以使用 .value 拉取选定的值,使用它来填充标签,然后使标签可见。但是 .value 始终与下拉列表中突出显示的值保持不变。有没有办法在不实际单击并选择和设置组合框值的情况下指向突出显示的列表项的值?
  • 太棒了。我已经开始编写这样的代码,但远没有那么优雅。谢谢
猜你喜欢
  • 2016-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多