在下拉列表中,我有幾個項目。當我選擇一個項目時,我可以在列表中將該項目的位置作爲數字嗎?獲取下拉列表中選定項目的位置(數量)
回答
如果您正在使用列表或組合框,ListIndex
似乎是你在之後。
VB幫助ListIndex
屬性:返回或設置列表框或組合框中當前選定項目的索引號。讀/寫長。備註。您不能在多選列表框中使用此屬性。
如果沒有選擇任何東西,ListIndex
的值是-1
。如果內存服務,它是一個基於零的索引。
ListIndex
無法在設計時設置,因此它未在屬性窗口中列出。
輸入代碼時,輸入列表框名稱,然後點編輯器顯示所有可用的屬性。向下滾動列表,記下看起來有趣的任何內容,然後查看它們。
如果你正在尋找一個數據驗證列表的索引,這是我會怎麼做:
將下面的代碼放在ThisWorkbook模塊中:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim ValidationIndex As Long
Dim rngTest As Excel.Range
'assumes the data validation is in a cell named "rngTest"
On Error Resume Next
Set rngTest = Sh.Range("rngTest")
If rngTest Is Nothing Then
Exit Sub
End If
On Error GoTo 0
If Not Intersect(ActiveCell, Sh.Range("rngTest")) Is Nothing Then
ValidationIndex = GetValidationIndex
MsgBox ValidationIndex
End If
End Sub
將這個功能在ThisWorkbook模塊,或者在任何常規模塊中:
Function GetValidationIndex() As Long
'returns a 1-based index
Dim rngTest As Excel.Range
Dim varValidationString As Variant
Dim ErrNumber As Long
Dim i As Long
With ActiveCell.Validation
If .Type = xlValidateList Then '3
On Error Resume Next
Set rngTest = ActiveCell.Parent.Range(.Formula1)
'I do this goofy thing with ErrNumber to keep my indenting and flow pretty
ErrNumber = Err.Number
On Error GoTo 0
'if the Validation is defined as a range
If ErrNumber = 0 Then
GetValidationIndex = Application.WorksheetFunction.Match(ActiveCell.Value2, rngTest, 0)
Exit Function
'if the validation is defined by comma-separated values
Else
varValidationString = Split(.Formula1, ",")
For i = LBound(varValidationString) To UBound(varValidationString)
If varValidationString(i) = ActiveCell.Value2 Then
GetValidationIndex = i + 1
Exit Function
End If
Next i
End If
End If
End With
End Function
+1這一次既令人厭惡又驚人! –
@ Jean-FrançoisCorbett謝謝!我很確定這不是OP想要的,也不能想到實際的用途,但寫起來很有趣。 –
+1我與JCF合作:) – brettdj
我認爲沒有必要使用函數。你可以通過僅使用匹配功能來獲得它,就像上面Doug的答案一樣。
Dim GetValidationIndex as Integer
Dim rngTest as Range
' Get the validation list
With ActiveCell.Validation
Set rngTest = ActiveCell.Parent.Range(.Formula1)
end with
GetValidationIndex = Application.WorksheetFunction.Match(ActiveCell.Value2, rngTest, 0)
- 1. 將項目放置在下拉列表中的特定位置
- 2. 獲取角NG選項下拉列表中選定的文本
- 3. 設置下拉列表中的項目數量下拉到變量
- 4. 如何在下拉列表中獲取所選項目的值?
- 5. 獲取引導下拉列表中選擇的項目與Angular4
- 6. 獲取從ASP MVC3下拉列表中選擇的項目
- 7. 在下拉列表中獲取所選項目的ID
- 8. 如何在下拉列表中獲取所選項目的值?
- 9. PyQt QComboBox設置下拉列表中可見項目的數量
- 10. Jquery 2下拉列表,從下拉列表中刪除選定的項目1
- 11. Imacros獲取下拉列表中的選項數
- 12. 當選擇任何項目時,獲取下拉列表的選定值
- 13. 在下拉列表中獲取與選定項目相關的屬性AngularJS
- 14. QComboBox下拉列表 - 設置選定的項目樣式
- 15. 獲取位於列表視圖中的下拉列表的選定值
- 16. 選擇下拉列表中的已選項目/選擇列表
- 17. MVC下拉列表不拾取選定的項目?
- 18. Android在抽屜列表中的特定位置獲取項目
- 19. angularjs:從數據庫的下拉列表中設置選定的項目
- 20. 獲取django change_form.html模板下拉列表中填充選項的數量
- 21. 使用Knockout在下拉列表中綁定選定的項目
- 22. VBA:下拉列表 - 獲取所選項目之前和之後的項目
- 23. 在下拉列表中設置選定的選項
- 24. 選擇的項目 - 下拉列表 - SQL
- 25. 下拉列表選擇的項目
- 26. MVC3下拉列表中的網格列,獲取選定的值
- 27. 如何獲取jquery中下拉選定項目的名稱?
- 28. 從數組列表中獲取固定數量的項目c#
- 29. Selenium 2 - 從下拉列表中獲取所選選項
- 30. 第一個下拉列表被選中,它會從下一個下拉列表中刪除選定的項目
就是這樣。我知道這是一個簡單的功能,但我找不到它。謝謝你的幫助! – jroeleveld