我正在开发Excel VBA中的数据编辑工具。在其中一个工作表上有一个ActiveX组合框,用于选择数据行。组合框上的更改事件会根据所选行中的数据更新一系列ActiveX复选框。
除了一个方面外,这似乎运作正常。有时,当Excel工作簿关闭时,关闭操作会触发checkbox_change事件。此时,编译器检查方法中的所有变量是否已定义,并发现复选框不再存在,从而显示“编译错误:变量未定义”消息。
更改工作表,触发workheet_activate事件(更新用户表单的某些属性)似乎是控制是否发生错误的原因。
在调试期间使用对象浏览器我可以看到没有列出复选框,而它们正常执行。发生错误时的调用堆栈仅包含checkbox_change事件。
我在事件处理程序的乞讨时尝试了一个包含'Exit Sub'的(有点矫枉过正)的解决方案,但它没有效果 - VBA仍然想知道当前未定义的变量。
有关如何拦截此问题或阻止此问题的任何建议将不胜感激。
这是一个从头开始的例子,我相信工作簿的所有元素都在我收到错误,但是在这个例子中没有发生错误 - 我不知道问题的哪个方面缺失。希望这很有帮助。
Elf_Big_Shdr_t *
This is a screenshot of the worksheet where the controls live