Vba Excel自动打开带有焦点/数值锁定问题的下拉列表
我的工作表中有一组使用数据验证列表的单元格。它工作得很好,但我希望当其中一个单元格获得焦点时,列表会自动下拉。我在网上找到了一些代码来实现这一点Vba Excel自动打开带有焦点/数值锁定问题的下拉列表,vba,excel,sendkeys,validation,Vba,Excel,Sendkeys,Validation,我的工作表中有一组使用数据验证列表的单元格。它工作得很好,但我希望当其中一个单元格获得焦点时,列表会自动下拉。我在网上找到了一些代码来实现这一点 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Target.Worksheet.Name = "Sheet1" And Target.Column = 1 Then Application.SendKey
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
承蒙:
但是,我遇到的问题是SendKeys
导致NumLock打开和关闭。我查了一下,这是一个已知的命令问题
除了SendKey命令,还有其他方法可以完成我在这里要做的事情吗
非常感谢您的帮助。此代码适用于我:
SendKeys "%{down}", True
DoEvents
SendKeys "{SCROLLLOCK}"
此代码适用于我: 承蒙: 下面是SDB MadDog修正的代码: 如果您希望通过数据验证将其应用于所有单元格 (') 但是,它每次都会更改我的NUMLOCK状态(toogle开/关)! 他提到他用API修复了它,我试过了,但它不起作用,因为它无法正确读取numlock状态(这一个) 但希望这能帮助有需要的人
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
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Err1:
If Target.Cells.Count = 1 Then
If Target.Validation.InCellDropdown = True Then
Application.SendKeys ("%{UP}")
End If
End If
Err1:
'do nothing
End Sub