2014-04-06 56 views
0

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

换句话说,当用户将鼠标移动到项目上并突出显示的项目发生更改时,我希望标签中的细节更新为突出显示的值。

到目前为止,我没有发现如何做到这一点。 Excel显然知道哪个项目被突出显示,但是如何以编程方式访问这些信息无法回避。

任何想法?

+0

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

回答

0

如果组合框是一个控件,那么您可以使用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是,通过我的测试,下拉的项目的高度...

+0

我在我的问题中发布了'mouseover',但我的意思是说'Mousemove'。我正在使用mousemove事件。一旦事件触发,我可以使用.value拉选定的值,使用它填充标签,然后使标签可见。但.value始终与下拉列表中突出显示的值保持一致。有没有办法指出突出显示的列表项的值,而无需实际点击并选择并设置组合框值? – user3503525

+0

看看现在的子... –

+0

辉煌。我已经开始编写这样的代码,但没有那么优雅。谢谢 – user3503525

相关问题