gpt4 book ai didi

vba - Excel VBA - alt keydown 事件在用户窗体上每隔一段时间触发一次

转载 作者:行者123 更新时间:2023-12-02 11:40:48 24 4
gpt4 key购买 nike

第一次发帖,对 VBA 和编码相当陌生。

我有一个 Excel 2010 用户窗体,其中有一个用于打开电子表格的按钮。当按住修改键时,我让按钮创建一个新文件。

我编写了以下代码:

Private Sub CommandButton4_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Debug.Print "X" & Shift
If Shift = 4 Then
CommandButton4.Caption = "New File"
NewFile = True
CommandButton4.ControlTipText = "New File"
End If
End Sub

Private Sub CommandButton4_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Debug.Print "Y"
CommandButton4.Caption = "Open File"
NewFile = False
CommandButton4.ControlTipText = "Open File"
End Sub

对于除 Alt 之外的每个键,KeyDown 和 KeyUp 事件都会触发。例如,按 Shift 键,我会得到调试输出:X1是X1是的

但是,按 Alt 我得到:X4是是X4是是的

我的表单中的其他所有内容都工作正常,但我不知道为什么其他所有 Alt KeyDown 都没有注册。怎么可能有KeyUp而没有KeyDown呢?

我四处寻找答案、错误报告或修复方法,但找不到。有什么想法吗?

最佳答案

您可以通过 API 调用来检测 ALT 键是否按下来轻松解决您的难题。

将其插入新模块

Public Declare Function GetKeyState Lib "user32" (ByVal key As Long) As Integer

试试这个:

Private Sub CommandButton1_Click()
If GetKeyState(KeyCodeConstants.vbKeyMenu) And &H8000 Then
MsgBox "Yes"
Else
MsgBox "no"
End If
End Sub

vbKeyMenu 是 ALT 键。 和 &H8000 只需要查看“实时”键状态(返回值有另一个打开和关闭的位,请参阅 here)

编辑:您看到的现象如下:
ALT 并看到 X4 Y 后,按向下 键。您将看到弹出的用户窗体的系统菜单。 Alt 键遵循其用途,将焦点移至系统菜单,并在下次按下时返回到按钮。如果按钮具有焦点,则用户窗体显然首先处理按键,并在按钮收到按键之前将焦点移动到系统菜单。

关于vba - Excel VBA - alt keydown 事件在用户窗体上每隔一段时间触发一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29306247/

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