ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] change中出现阶段错误而无法再次激活怎么办?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-7-11 08:54 | 显示全部楼层 |阅读模式
本帖最后由 公x鸡 于 2018-7-11 09:02 编辑

使用Application.EnableEvents = False,而程式沒有正常結束(例如出现执行阶段错误,如编辑1ex或编辑2ex出现错误,按了重新设置后)所造成无法再次激活,能不能通过修改下面的

  1. Private Sub Worksheet_Change(ByVal Target As Range)

  2. Dim rng As Range
  3. Set rng = Target
  4. If Intersect(rng, Worksheets(2).Range("a1")) Is Nothing Then
  5. Application.EnableEvents = False '禁止激发事件

  6. Call 编辑1ex
  7. Call 编辑2ex

  8.   Application.EnableEvents = True '操作完成后重新开启事件激发
  9. End If

  10. End Sub
复制代码


TA的精华主题

TA的得分主题

发表于 2018-7-11 09:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
单独运行一次 Application.EnableEvents = True 即可

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-11 12:12 | 显示全部楼层
liucf 发表于 2018-7-11 09:15
单独运行一次 Application.EnableEvents = True 即可

你好,谢谢,请问有没有办法,如果出现错误,那么自动纠正重新进入下一次

TA的精华主题

TA的得分主题

发表于 2018-7-11 17:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
公x鸡 发表于 2018-7-11 12:12
你好,谢谢,请问有没有办法,如果出现错误,那么自动纠正重新进入下一次

你的意思是不是 On Error Resume Next
但是Application.EnableEvents = True 却不能"重新进入下一次"

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-11 23:01 | 显示全部楼层
liucf 发表于 2018-7-11 17:25
你的意思是不是 On Error Resume Next
但是Application.EnableEvents = True 却不能"重新进入下一次"

你好,我意思是报错后,如果不再执行一次Application.EnableEvents = True,会卡在那里停止触发change;那我的理想状态是报错了,不是会弹出那个调试/结束/取消的窗口吗?我直接点掉结束,然后不另外执行Application.EnableEvents = True,这个change会自动回复初始状态,重新等待执行下一次触发(因为change里触发事件基本覆盖了绝大部分情况,但是特殊情况总会有一些出现不符而报错,我可以等后面所有东西都弄好了再回到之前的地方手动修改)

TA的精华主题

TA的得分主题

发表于 2018-7-12 09:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 liucf 于 2018-7-12 09:26 编辑
公x鸡 发表于 2018-7-11 23:01
你好,我意思是报错后,如果不再执行一次Application.EnableEvents = True,会卡在那里停止触发change; ...

好像不行,因为如果你不执行Application.EnableEvents = True,那么它一直就是False,也就是不能触发事件,反正本人是不知道有执行Application.EnableEvents = True外,还有其他自动使其为True的方法
有的时候,在程序靠前面部分加上一句 On Error Goto ErrH
在Application.EnableEvents = True前面加上 ErrH:
ErrH:  Application.EnableEvents = True
可能能解决部分问题

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-12 11:51 | 显示全部楼层
liucf 发表于 2018-7-12 09:20
好像不行,因为如果你不执行Application.EnableEvents = True,那么它一直就是False,也就是不能触发事件,反 ...

你好,谢谢,可以用,收藏了,达到另外一种效果,但是不是我理想的效果,这样绕过了报错,不知道问题出在哪,也算是另外一种收获,谢谢了

TA的精华主题

TA的得分主题

发表于 2018-7-12 11:58 | 显示全部楼层
本帖最后由 any1009 于 2018-7-12 11:59 编辑

现学现卖:

sub test()
On Error GoTo Err_Handle
     你可能会报错的程序
Exit Sub
Err_Handle:
     你的其他程序或没有
endsub

这样是报错了,就跳转到其他程序,如果没有就结束。

TA的精华主题

TA的得分主题

发表于 2018-7-12 14:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这个问题问得好,解决了我一直困惑的问题.
就是程序在调试时出错,调试好后,只能重新打开再看调试效果.
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-9 00:06 , Processed in 0.045508 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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