excel - OnKey还要按初始键
问题描述
嗨,我正在尝试将宏附加到组合键,并运行初始组合键,但它似乎不起作用。
与此相关,我稍后会解释为什么有办法将按下的键作为变量发送,或者以某种方式捕获它?例如: Application.OnKey "{LEFT}", "testMessage({LEFT})" ,但这对我不起作用。在下面的示例中,SendKeys "{RIGHT}" 实际上出于某种原因触发了 NumLock,我听说这是 Excel 的一个错误,但如果我可以将密钥作为变量发送,我可以使用它以不同的方式模拟 SendKeys ,如偏移量。
亲切的问候,丹尼尔
Sub onKeyToggle()
If ActiveSheet.CodeName = "WS_Deliverables" Then
Application.OnKey "{LEFT}", "testMessage"
Application.OnKey "{RIGHT}", "testMessage"
Application.OnKey "{UP}", "testMessage"
Application.OnKey "{DOWN}", "testMessage"
Else
Application.OnKey "{LEFT}", ""
Application.OnKey "{RIGHT}", ""
Application.OnKey "{UP}", ""
Application.OnKey "{DOWN}", ""
End If
End Sub
Sub testMessage()
SendKeys "{RIGHT}"
MsgBox "pressed"
End Sub
解决方案
为了将键重置为正常含义,您必须按如下方式更改代码。而且您还必须确保代号确实是WS_Deliverables并且您不是在谈论工作表的可见名称。
Sub onKeyToggle()
If ActiveSheet.CodeName = "WS_Deliverables" Then
Application.OnKey "{LEFT}", "testMessage"
Application.OnKey "{RIGHT}", "testMessage"
Application.OnKey "{UP}", "testMessage"
Application.OnKey "{DOWN}", "testMessage"
Else
Application.OnKey "{LEFT}"
Application.OnKey "{RIGHT}"
Application.OnKey "{UP}"
Application.OnKey "{DOWN}"
End If
End Sub
推荐阅读
- c++ - 如何使用 C/C++ 获取硬盘的运行时间
- ioredis - redis关闭后一直重连?
- google-cloud-storage - 转移作业卡在“计算”上
- django - 如何在 Django==2.1 中使用现有模型制作登录和注册页面
- iis - Asp net core 应用程序(托管在 iis 中)无故关闭
- java - Mapstruct 没有在生成的源文件中更新它的 getter 和 setter
- c# - 在句子之间使用C#在word中插入图像
- asp.net-mvc - 随机文件访问问题 IIS
- ruby-on-rails - 我无法更新 Ruby on Rails
- module - 模块内的相对路径