在VBA中,是否可以检测到" Ctrl"键被按下并且鼠标滚轮同时滚动?

时间:2016-12-04 21:33:39

标签: vba access-vba ms-access-2013

我对使用 Ctrl 键和鼠标滚动事件在Access VBA中实现表单缩放功能感兴趣。如果用户按住 Ctrl 键并向上滚动,则表单将放大。如果用户按住 Ctrl 键并向下滚动,表单将缩小。

我知道如何捕获 Ctrl 按键,我知道如何检测鼠标滚动事件,但我不知道如何同时执行这两项操作。有可能吗?

1 个答案:

答案 0 :(得分:2)

好的,明白了。我在函数定义之外创建一个布尔变量,以了解何时按下 Ctrl 键。

Private ctrlKeyIsPressed As Boolean

然后我将该变量更改为True事件中的FalseKeyDown

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

    'Detect if the "Ctrl" key was pressed
    If (Shift And acCtrlMask) > 0 Then
        ctrlKeyIsPressed = True
    End If

End Sub

<强>更新

您还需要使用表单的KeyUp事件将ctrlKeyIsPressed按下的变量设置为false。

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
    ctrlKeyIsPressed = False
End Sub

然后在鼠标滚轮事件中,我使用该变量:

Private Sub Form_MouseWheel(ByVal Page As Boolean, ByVal Count As Long)

    'If the "Ctrl" key is also being pressed, then zoom the form in or out
    If ctrlKeyIsPressed Then

        If Count < 0 Then
            Debug.Print "Zoom In"
        ElseIf Count > 0 Then
            Debug.Print "Zoom Out"
        End If

    End If

End Sub