[英]How to automatically expand drop-down validation list
除了SendKeys
,還有其他選擇可以自動擴展下拉驗證列表嗎? 單擊單元格后,我想展開下拉驗證列表。 我的問題的重點完全在如何避免SendKeys
方法上。
這是使用SendKeys
的正常工作的解決方案:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If HasValidation(Target) Then
SendKeys "%{DOWN}"
SendKeys "{NUMLOCK}", True 'Workaround for Numlock turn off bug
End If
End Sub
Function HasValidation(MyCell As Range) As Boolean
Dim t: t = Null
On Error Resume Next
t = MyCell.Validation.Type
On Error GoTo 0
HasValidation = Not IsNull(t)
End Function
相關鏈接:
HasValidation
函數: https : HasValidation
NumLock
錯誤: https : //stackoverflow.com/a/29551913/1903793
上面的代碼可以順利運行。 我只是因為廣泛報道的問題而對SendKeys
有偏見。 我懷疑將此解決方案合並到較大的代碼中可能會在將來導致意外行為,而這可能很難捕獲。
您對要實現的目標的定義還需要回答一些問題,但是也許下面的代碼將使您走上正確的道路。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Const Trigger As String = "A3:B4" ' modify to suit
Const ValCell As String = "H3" ' modify as required
Dim ValType As Long
If Not Application.Intersect(Target, Range(Trigger)) Is Nothing Then
Application.EnableEvents = False
Range(ValCell).Activate
On Error Resume Next
ValType = ActiveCell.Validation.Type
On Error GoTo 0
If ValType = 3 Then SendKeys "%{DOWN}"
Application.EnableEvents = True
End If
End Sub
上面的過程監視觸發范圍A3:B4,您可以將其調整為所需的范圍。 如果單擊此范圍內的一個單元格(可能是單個單元格范圍),則在存在驗證的單元格中定義為ValCell的下拉列表將展開(如果存在)。 該代碼通過激活CellVal
單元來實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.