2014-04-06 98 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

相關問題