SendKeys对数字锁定造成严重破坏

时间:2017-04-24 03:23:46

标签: vba ms-access access-vba

在连续的形式中,我试图通过发送SendKeys来复制当我获得该字段的焦点时从前一记录中的字段值。 每次场都获得焦点时,我的数字锁定都会切换。 有更好的方法吗?

Private Sub SampleDate_GotFocus()
 SendKeys "^'", True
End Sub

1 个答案:

答案 0 :(得分:0)

这是旧bug。作为一种解决方法,您可以使用下面的函数代替SendKeys,但最好的解决方案 - 如果可能的话,完全避免使用SendKeys。

Sub mySendKeys(sKeys As String, Optional bWait As Boolean = False)
Dim bNumLockState As Boolean
Dim bCapsLockState As Boolean
Dim bScrollLockState As Boolean
    bNumLockState = IsNumLockOn()
    bCapsLockState = IsCapsLockOn()
    bScrollLockState = IsScrollLockOn()
    SendKeys sKeys, bWait
    If IsNumLockOn() <> bNumLockState Then
        ToggleNumLock
    End If
    If IsCapsLockOn() <> bCapsLockState Then
        ToggleCapsLock
    End If
    If IsScrollLockOn() <> bScrollLockState Then
        ToggleScrollLock
    End If
End Sub