我的工作表中有一组使用数据验证列表的单元格。它工作得很好,但我希望当其中一个单元格获得焦点时,列表会自动下拉。我在网上找到了一些代码来完成这项工作。
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Worksheet.Name = "Sheet1" And Target.Column = 1 Then
Application.SendKeys ("%{down}")
End If
End Sub
礼貌:http://howoffice.com/automatically-open-the-drop-down-list-when-a-cell-get-focus-in-excel/
但是,我遇到的问题是SendKeys
导致NumLock打开和关闭。我查了一遍,这是该命令的一个已知问题。
SendKey命令还有其他替代方法可以完成我在这里要做的事情吗?
感谢任何帮助。
答案 0 :(得分:1)
此代码对我有用:
由On focus after tabbing of Excel drop down, automatically show list for selection
提供ATTENDEE 0+ MUST include all "Attendees" being removed
the event. MUST include all "Attendees" if
the entire event is cancelled.
这是SDB MadDog的更正代码:
如果您希望通过数据验证将其应用于所有单元格 ('On focus after tabbing of Excel drop down, automatically show list for selection)
Private Sub Worksheet_SelectionChange(ByVal Target As Range
On Error GoTo Err1:
If Target = Range("I5") Then
Application.SendKeys ("%{UP}")
End If
If Target = Range("I6") Then
Application.SendKeys ("%{UP}")
End If
If Target = Range("I7") Then
Application.SendKeys ("%{UP}")
End If
Err1:
'do nothing
End Sub
但是,它每次都会更改我的NUMLOCK状态(切换开/关)! 他提到他用API修复了该问题,但我尝试过,但由于无法正确读取numlock状态(此http://www.freevbcode.com/ShowCode.asp?ID=1151)而无法正常工作
但是希望这可以帮助需要帮助的人!
答案 1 :(得分:0)
此代码适用于我:
SendKeys "%{down}", True
DoEvents
SendKeys "{SCROLLLOCK}"