Excel自动打开下拉列表,显示焦点/ NumLock问题

时间:2015-02-24 01:18:15

标签: vba excel-vba sendkeys validation excel

我的工作表中有一组使用数据验证列表的单元格。它工作得很好,但我希望当其中一个单元格获得焦点时,列表会自动下拉。我在网上找到了一些代码来完成这项工作。

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命令还有其他替代方法可以完成我在这里要做的事情吗?

感谢任何帮助。

2 个答案:

答案 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}"