ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1821|回复: 9

[求助] VBA程序运行过程中如何用快捷键强制终止

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-10-27 17:43 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 protel2003 于 2023-10-27 23:03 编辑

各位大侠,我做了一个循环点击的小代码,其中有Do循环(设置了Do循环的次数),但有的时候需要强制中断代码运行。
能不能不管程序运行到那块,只要按下Esc,VBA程序直接中断运行
或者在程序运行过程中,如何设置快捷键,实现程序暂停、继续、结束执行程序这几个功能
比如能够调出这个弹窗,以便操作

123.png

循环点击.zip

22.61 KB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2023-10-27 17:53 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-10-27 18:03 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-10-27 18:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 剑指E 于 2023-10-27 18:28 编辑

调试阶段可在循环里加 DoEvents,需停止时点暂停或停止
调试好后删除(严重影响速度)

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-10-27 18:25 | 显示全部楼层
这个代码主要是给其他人用的

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-10-27 18:27 | 显示全部楼层
直接按Esc不行
Ctrl+fn+b,也不行

TA的精华主题

TA的得分主题

发表于 2023-10-27 19:12 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-10-27 20:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
个人经验,按住esc,然后在excel与vbe界面之间不停切换,基本上什么样的卡死都有机会跳出调试菜单的

TA的精华主题

TA的得分主题

发表于 2024-5-22 18:44 | 显示全部楼层
最近遇到同样的问题,试了很多方法都不行,最后研究出来了一个方法,做个按钮,运行以下代码即可立即停止所有宏程序:
Sub 停止所有宏()
X = 1 / 0
End Sub

运行之后出现报错窗口,按结束即可

TA的精华主题

TA的得分主题

发表于 2024-5-23 18:59 | 显示全部楼层
使用VBA中的Application.OnKey方法来实现在程序运行过程中设置快捷键来暂停、继续和结束执行程序的功能。以下是一个示例代码
Dim isPaused As Boolean

Sub StartLoop()
    Dim i As Integer
   
    ' 设置快捷键
    Application.OnKey "^{PAUSE}", "PauseResume" ' Ctrl+Pause键暂停/继续执行
    Application.OnKey "{ESC}", "StopExecution"  ' ESC键结束执行
   
    isPaused = False
   
    For i = 1 To 1000
        If Not isPaused Then
            ' 这里放置你的循环代码
            ' 例如:
            Debug.Print i
            DoEvents ' 允许中断
            
            ' 检查是否按下ESC键
            If isPaused Then
                Exit For
            End If
        End If
    Next i
   
    ' 恢复快捷键设置
    Application.OnKey "^{PAUSE}"
    Application.OnKey "{ESC}"
End Sub

Sub PauseResume()
    isPaused = Not isPaused
    If isPaused Then
        MsgBox "程序已暂停,按Ctrl+Pause键继续执行。"
    Else
        MsgBox "程序已继续执行。"
    End If
End Sub

Sub StopExecution()
    isPaused = True
    MsgBox "程序已结束执行。"
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-16 20:15 , Processed in 0.035780 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表