![]() |
1
1
我可以用一个叫乔治的简单XLA来复制这个问题:
我安装了XLA。然后,我创建了alice.xls,其中有一个文本框,当它发生变化时,该文本框会调用setharry,并且其中包含一个带有=getharry()的单元格。我一直很简单:
然后我把alice.xls复制成bob.xls,并把它们都运行了。正如所料,如果任一工作簿更改了Harry,则两个工作簿都会看到结果。 我说是预期的,因为XLA和DLL一样,因为内存中只有一个副本是所有人共享的;显然这包括全局变量,这是有意义的。我只是想测试一下这个理论。 在我看来,解决这个问题的最好方法是使用类模块而不是普通模块。通过这种方式,您可以在工作簿的“打开”事件中为每个工作簿提供自己的类实例及其变量。如果变量声明为public,则不需要属性gets和set,但如果有值可以使用它们。 |
![]() |
2
1
声明为public的变量的作用域是它们所在的工作簿。如果您有另一个带有myvar的工作簿,在一个工作簿中更改它的值不会在另一个工作簿中更改它。也许您有一个事件,它设置了ActiveSheet中的变量,该变量在两个项目中触发,并将变量设置为相同的内容。 |
![]() |
3
1
全局变量的作用域是全局的。 我会将它们存储在每个工作簿中的隐藏名称中,然后在每次激活工作簿时重置全局变量(也会将值重新存储在已停用的工作簿中)。 |
![]() |
4
1
我认为您可以在运行时获得工作簿名称。 因此,一个集合可能会完成这项工作。
但不确定它是否适合您的加载项。 |
![]() |
Interactive · 如果相邻单元格为空,则VBA完成循环 1 年前 |
![]() |
RonanC · VBA数据验证下拉列表,是否也允许自由文本? 1 年前 |
|
user1646660 · 如果日期介于两个日期之间,则向插槽添加日期 1 年前 |
![]() |
Blake S · Excel宏错误:过程调用或参数无效 1 年前 |
|
Hieu Minh · 数据透视表无法覆盖现有的合并单元格 1 年前 |
![]() |
Nick · 当条件匹配电源查询时,从单独的查询中返回多列 2 年前 |