ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

VBA窗体运行中如何禁用ESC键

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-12-22 17:04 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我设计了一个VBA窗体,运行时有多次打开不同文件提取数据,因为不希望打开过程有ESC中断,使用了Application.EnableCancelKey = xlDisabled,但打开文件这部分代码是无法禁止ESC的,Set wc = Workbooks.Open(ThisWorkbook.Path & "\Manage\MM.xlsx", ReadOnly:=True, Password:="444"),只要按下ESC仍然会出现打开过程中断,虽然使用了On Error Resume Next跳过错误,但文件打开是失败的,没有提取到数据,我在ESC发生后加了判断,如果文件打开失败就重新打开,但以后再次打开该文件发现无论尝试多少次,即使不再使用ESC依旧失败,这个问题怎么解决?好像是第一次打开问题被中断后产生了一个错误,但无法从根本上消除其影响,请高手不吝赐教!错误代码91,请参考!




TA的精华主题

TA的得分主题

发表于 2024-12-22 17:19 | 显示全部楼层
不是很能理解 在代码作业期间 去按ESC是为了什么,盲猜你需要这个Application.Interactive = False

TA的精华主题

TA的得分主题

发表于 2024-12-22 19:25 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-12-22 19:38 来自手机 | 显示全部楼层
'可以试试屏蔽键盘鼠标
Application.Interactive = False
Application.Interactive = True

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-22 19:49 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
laterite 发表于 2024-12-22 19:25
这个问题我之前也问过

https://club.excelhome.net/thread-1652553-1-1.html

多谢帮助,我这个比你的复杂,这个方法解决不了,我是在窗体初始化过程遇到的这个问题

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-22 19:51 来自手机 | 显示全部楼层
lss001 发表于 2024-12-22 19:38
'可以试试屏蔽键盘鼠标
Application.Interactive = False
Application.Interactive = True

好的,明天试试,谢谢先

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-23 12:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lss001 发表于 2024-12-22 19:38
'可以试试屏蔽键盘鼠标
Application.Interactive = False
Application.Interactive = True

实测这个方法对于ESC无效,窗体初始化过程中按下ESC键仍然会发生错误而终止,而且这个要慎用,它对其它操作有影响,什么都干不了

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-23 12:25 | 显示全部楼层
今天又研究了一下解决方案,现在问题如下:
窗体初始化开始后,第1次打开文件(此时按下ESC键)会出现如下现象:
1、显示错误代码1004
2、程序自动忽略错误后尝试第二次打开结果显示如下:
方法 'Open' 作用于对象 'Workbooks' 时失败,
但如果手动单步调试第二次打开文件则没有任何问题
采用Err.clear也无效,有懂行的高手过来看看吗

TA的精华主题

TA的得分主题

发表于 2024-12-23 12:43 | 显示全部楼层
  1. Declare Function BlockInput Lib "user32" (ByVal fBlock As Long) As Long
  2. Sub BlockKeyboardInput()
  3.     ' 阻止键盘鼠标输入
  4.     Call BlockInput(True) '可以通过Ctrl+Alt+Dlete 取消
  5.     '此处执行自己需要运行的代码
  6.     ' 完成后取消阻止键盘输入
  7.     Call BlockInput(False)
  8. End Sub
复制代码
用这个吧

TA的精华主题

TA的得分主题

发表于 2024-12-23 13:35 来自手机 | 显示全部楼层
本帖最后由 lss001 于 2024-12-23 13:47 编辑

请上传附件测试
特殊情况下才使用
Application.Interactive = 0
阻止Esc一般情况下都是使用
Application.EnableCancelKey = 0
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-25 02:52 , Processed in 0.041213 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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