作者:绿色风
分类:
时间:2022-08-17
浏览:127
楼主 amulee |
Q:如何禁用或启用某个已经过程? A:当代码已经编写好,有时候我们需要临时禁用该过程让其不能执行,之后还要恢复,该如何处理? 比如:在工作表中已经有下列事件代码。
- Private Sub Worksheet_SelectionChange(ByVal Target As Range)
- MsgBox 1
- End Sub
用户需要临时禁止该事件代码执行,但是其他事件代码依旧有效。且该代码可以在需要的时候恢复。我们可以通过下面自定义过程实现。
- Sub InSertA(ByRef SubName As String, ByRef ModulName As String, ByRef ZJ As String)
- Dim i&
- i = ThisWorkbook.VBProject.VBComponents(ModulName).CodeModule.ProcBodyLine(SubName, vbext_pk_Proc)
- If Err.Number = 35 Then
- Err.Clear
- MsgBox "未找到过程"
- Exit Sub
- Else
- If ZJ = "Disable" Then
- ThisWorkbook.VBProject.VBComponents(ModulName).CodeModule.InsertLines i + 1, "Exit Sub"
- Else
- ThisWorkbook.VBProject.VBComponents(ModulName).CodeModule.DeleteLines i + 1, 1
- End If
- End If
- End Sub
过程参数注释: SubName :需要禁用的过程名称 ModulName :过程所在的模块名称 ZJ :需要禁用或者启用,Enable为启用,Disable为禁用。
参考以下代码调用该过程
- Sub 禁用SelectChange()
- Call InSertA("Worksheet_SelectionChange", "Sheet2", "Disable")
- End Sub
- Sub 启用SelectChange()
- Call InSertA("Worksheet_SelectionChange", "Sheet2", "Enable")
- End Sub
请见附件以供参考。
启用-禁用SelectionChange.rar |
2楼 wnianzhong |
正在学习VBA,先收藏起来慢慢学,谢谢. |
3楼 水星钓鱼 |
感谢分享 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一