Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何为VBA宏设置热键(Ctrl+;C,C)_Excel_Vba - Fatal编程技术网

Excel 如何为VBA宏设置热键(Ctrl+;C,C)

Excel 如何为VBA宏设置热键(Ctrl+;C,C),excel,vba,Excel,Vba,我想指定一个热键和弦,例如Ctrl+C,C来调用宏VBA excel。请帮帮我。我正在尝试使用应用程序。Onkey,但无法使用。 可怕和可怕,但您可以编写一个“临时”宏,它使用GetAsyncKeyState来检测键状态,并检查C是否被释放,然后再次按下 正如评论中正确提到的,重新绑定Ctrl+C(默认的“复制”快捷方式)是。。。“麻烦”-因此,如果在宏启动后1秒内未重新按C键,将运行正常复制操作 选项显式 将函数GetAsyncKeyState Lib“User32.dll”(ByVal vK

我想指定一个热键和弦,例如Ctrl+C,C来调用宏VBA excel。请帮帮我。我正在尝试使用
应用程序。Onkey
,但无法使用。

可怕和可怕,但您可以编写一个“临时”宏,它使用
GetAsyncKeyState
来检测键状态,并检查C是否被释放,然后再次按下

正如评论中正确提到的,重新绑定Ctrl+C(默认的“复制”快捷方式)是。。。“麻烦”-因此,如果在宏启动后1秒内未重新按C键,将运行正常复制操作

选项显式
将函数GetAsyncKeyState Lib“User32.dll”(ByVal vKey作为Long)声明为Long
常数VK_C As Long=&H43
公共Sub-CtrlCMacro()
Dim键以布尔形式显示,timeLimit以单个形式显示
keyCReleased=False
timeLimit=Timer+1'这给你1秒的时间来释放并按下C
'在Windows上,这是正确的分数秒。
在Mac电脑上,这是整秒的时间,因此不会总是表现正常,可以给你0.1秒的时间来采取行动
而时间限制>计时器
'这将检查您是否释放然后重新按“C”
如果GetAsyncKeyState(VK_C)=0,则
“您必须先释放钥匙,然后才能再次按下!
keyCReleased=True
埃尔塞夫·凯克雷特
'Application.OnTime确保在下一个宏启动之前完成此子任务
Application.OnTime Now(),“MyOtherMacro”
出口接头
如果结束
温德
'Ctrl+C的默认操作应为复制
选择,复制
端接头
公共亚体温计()
MsgBox“宏已运行!”
端接头
“调试东西
私有子集合CtrlC()
“捆绑
Application.OnKey“^c”、“CtrlCMacro”
端接头
私有子重置中心()
'重置为正常状态
Application.OnKey“^c”
端接头

你要怎么按同一个键两次?@Tom用两个手指,duh.@SmrtGrunt为什么我没想到?!不能有接受两个键的本机热键;为此,您必须实现自己的钩子。。。我觉得这篇文章的意思是热键和弦;我编辑了这篇文章以反映术语。这样的热键可以分多个步骤工作,而且确实可以。。。如果是从头开始写的(虽然我可能仍然想把任何劫持Ctrl+C热键的人的头撕下来,但那是另一回事)。谢谢,但它无法运行。我正在尝试下面的代码,但不能。@PhamMinhHoang您遇到了什么错误?您需要运行
SetCtrlC
将宏绑定到
Ctrl
+
C
操作才能生效。请参阅此视频:使用其他计算机,您的代码已完成。谢谢你。在我的电脑上,这个代码是错误的。我不知道原因将函数GetAsyncKeyState Lib“User32.dll”(ByVal vKey As Long)声明为Long@PhamMinhHoang你的电脑是PC还是Mac?您使用的是哪个版本的Excel?