需要VBA重新编译

我有一个接口IReadable我声明:

 Public Function getFields() As Dictionary End Function Public Function getData() End Function 

接口的实例属性设置为publicNotCreatable

我有一个Excel工作表,实现这个接口和这些方法(细节不重要)。

从模块mApp,我从子例程应用下面的代码:

 Dim oSheet As IReadable Set oSheet = ThisWorkbook.Sheets("tbl_deals") 'Compile error 

当VBA通过菜单Debug – Compile VBAProject进行编译时,一切运行良好。 奇怪的是,代码只能运行一次。
如果我再次尝试运行代码, Type Mismatch出现“ Type Mismatch错误。

为了使代码再次运行,我需要将接口的状态切换为私有和后退,重新编译,代码再次运行一次(第二次,代码再次返回types不匹配错误)。

有关如何解决这个问题的任何想法,使代码运行稳定,无需每次重新编译?

编辑:这是一个奇怪的问题。 我认为这可能与已编译代码的污染有关,但是当在新的Excel工作簿中重新创build案例时,相同的问题仍然存在。

使用工作表的代码名称而不是显示名称:

在这里输入图像说明