我正在用 excel 創建一個簡單的表單,它將在觸摸設備中運行。在表單的某些部分,我創建了一個下拉驗證串列。我需要使用按鈕轉到驗證串列中的下一項和上一項。
我發現的唯一方法是使用 Application.Sendkeys 訪問下拉串列但不起作用。有什么想法嗎?
sub Next_item click()
ActiveSheet.Range(cell_rng.Text).Select
Application.SendKeys ("%{Down}")
Application.SendKeys ("{Down}{Enter}")
End Sub
uj5u.com熱心網友回復:
您可能會考慮轉到資料驗證源并獲取下一項,而不是嘗試直接操作單元內下拉選單。例如,如果您的資料驗證是一個逗號分隔的串列

您可以使用這樣的代碼來獲取下一個值:
Public Sub NextItem()
Dim dv As Validation
Dim vaSplit As Variant
Dim i As Long
'Formula1 contains the comma sep list of values
Set dv = ActiveCell.Validation
vaSplit = Split(dv.Formula1, ",")
For i = LBound(vaSplit) To UBound(vaSplit)
'if you're at the currently selected one
If vaSplit(i) = ActiveCell.Value Then
'but not at the last one
If i < UBound(vaSplit) Then
'select the next one
ActiveCell.Value = vaSplit(i 1)
Exit For
End If
End If
Next i
End Sub
如果您的串列來自一個簡單的范圍

你可以使用幾乎相同的代碼
Public Sub NextItemRange()
Dim dv As Validation
Dim vaSplit As Variant
Dim i As Long
Set dv = ActiveCell.Validation
vaSplit = Range(dv.Formula1).Value
For i = LBound(vaSplit, 1) To UBound(vaSplit, 1)
If vaSplit(i, 1) = ActiveCell.Value Then
If i < UBound(vaSplit, 1) Then
ActiveCell.Value = vaSplit(i 1, 1)
Exit For
End If
End If
Next i
End Sub
動態范圍或表格可能會給它帶來麻煩,但希望這是一個開始。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/425398.html
上一篇:我正在嘗試制作“設定游戲”,但不知道如何正確檢查設定
下一篇:如何通過驗證孩子來改變父母?
