gpt4 book ai didi

vba - 释放按键时触发事件 VBA

转载 作者:行者123 更新时间:2023-12-02 06:51:25 28 4
gpt4 key购买 nike

我有这段代码来检测何时按下Enter

Private Declare Function GetKeyState Lib "user32" _
(ByVal nVirtKey As Long) As Integer
Const VK_RETURN As Integer = &HD

我在这样的宏中使用这个函数

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If GetKeyState(VK_RETURN) < 0 Then Enter = True Else Enter = False
If Enter = True Then
Call IncreaseValue
End If
End Sub

但是,当按住 Enter 键时,会多次调用此函数。有没有办法让每次按下回车键时只调用一次这个函数?

附加信息以防万一:为什么我需要它是因为我有一个数据输入表,它作为一个表单工作 - 每次按下回车键时,它都会将单元格值增加 1,用于查找值。但按住 Enter 键会跳过记录。

最佳答案

当然有!您所需要的只是跟踪 Entertoggling (注意返回值)。

其背后的主要思想是跟踪低位(切换/取消切换),并且每当它发生变化且高位为 1(按下 ) - 我们可以自由地增加我们想要的东西。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static StatePreservedResponse As Long
Dim StateResponse As Long

StateResponse = GetKeyState(VK_RETURN)

If StateResponse < 0 And StateResponse <> StatePreservedResponse Then
Call IncreaseValue
End If

StatePreservedResponse = StateResponse
End Sub

关于vba - 释放按键时触发事件 VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46274683/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com