首页 > 解决方案 > 全局变量不能跨类生存?

问题描述

我有一个 UserForm mailForm、一个自定义类Document和一个utilities声明为Option Private Module.

以下序列可能会引发错误:

总而言之,顺序是:user--> sendEmail() :: form--> generatePDF() :: class--> printPDF() :: utilities

printPDF()在模块的宏中utilities,我可能会在生成 PDF 时出现错误。此错误的触发器应停止执行用户发送电子邮件的操作。

因此,我声明了全局变量 ( Dim errorWhilePDF As Boolean) 并将声明放在类模块的顶部。如果错误发生在宏printPDF()中,我只是设置errorWhilePDF = True

我的问题是True模块中设置的这个变量的值utilities没有保存在用户表单中,它仍然将其读取为假。相反,如果我在模块中声明变量utilities,用户表单会将其视为Empty.

我应该如何声明我的变量errorWhilePDF,以便在模块中设置它utilities并在用户表单中使用,知道我正在通过类Document

标签: vbaexcel

解决方案


真正的全局使用全局关键字在标准模块而不是类模块中定义的变量上。类模块是每个实例的(VBA 中的静态类除外)。


推荐阅读