向模块添加过程会取消用户表单加载/显示,必须运行两次 show userform 才能显示

问题描述

我有一个用户表单 frmSort,它显示在运行我的主代码之前选择的列。
为了使 frmSort 动态更新选择的列,以防在从功能区打开 frmSort 时选择了错误的列,我必须在活动工作表模块中有一个 Worksheet_SelectionChange 代码

由于 Worksheet_SelectionChange 删除了撤消堆栈(至少我的是这样),并且我有其他依赖于 Application.Undo代码,我已经登陆在正确的工作表模块中插入 Worksheet_SelectionChange 而 {{ 1}} 正在显示并在 frmSort 期间将其删除

令我惊讶的是代码
Userform_Terminate 在同一次运行中以某种方式破坏了我的 LineNum = .CreateEventProc("SelectionChange","Worksheet")负载

首先它在添加代码显示VBE编辑器,即使没有打开VBE,这也不好。其次,它不显示用户表单。我的测试告诉我用户表单已加载,但未显示。在“过程添加”后在同一次运行中运行 ```frmSort.show vbModeless`` 不起作用。

我可以添加 frmSort.show vbModeless显示用户表单 modal,但不是无模式的。 由于我希望能够更改主代码运行的列,并在用户表单中显示更改,我相信无模式的用户表单是要走的路。

为什么它在运行两次时起作用的原因是我的子 Worksheet_SelectionChange 在插入之前检查过程是否存在。让我必须按两次功能区按钮并关闭 VBE 才能继续...

对如何进行有任何想法吗?

我想先以模态打开,然后以非模态隐藏并重新打开,但代码

SelectionChangeOnOff

不卸载用户表单。不是说以模态加载然后以非模式重新加载是可行的方法,而是将其扔在那里。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)