Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Excel自动打开带有焦点/数值锁定问题的下拉列表_Vba_Excel_Sendkeys_Validation - Fatal编程技术网

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