![]() |
1
3
这很有趣,因为我从来不知道可以让两个模块同时声明一个同名的公共类型。现在我知道了,我吓坏了。 首先,Eric Towers是正确的,您只想将类型声明放在一个模块中。使用此类型的其他模块将取决于该模块是否可用,但这只是模块化带来的东西。管理模块之间的依赖关系是所有软件开发的共同需求。不幸的是,在单个VBA项目中(就像您在单个Excel工作簿中找到的类型),管理模块依赖关系的唯一选项是手动。(在VBA中,“模块”实际上是“源代码文件”。其他语言/环境具有各种高级打包系统。) 现在是可怕的部分。如果您在不同的模块中使用相同的名称声明类型,那么您就是在自找麻烦。考虑两个VBA模块:
和
在同一个项目中,您的代码将“编译”(至少在Excel VBA中)。但这两个“useTyp”潜艇的输出不同。更糟糕的是,如果您从一个模块中删除一个类型声明,您会突然更改同一模块中“useTyp”例程的行为!这种模棱两可的说法是不可取的。 现在的情况是VBA实际上正在创建两种不同的类型:“Module1.typ”和“Module2.typ”。当您在同一个模块中并且不限定类型名时,VBA会自动找到“正确”的类型并使用它。
|
![]() |
2
3
使用第二种方法。关键是创建一个可重用类型blob。为了可重用,必须将其分离。然后,是的,使用这些类型的每个模块都必须引用该blob。但是对于模块之间的相互调用,需要它们调用的模块的表单,也可以这样说。 |
![]() |
3
1
还可以为XYPoints创建类。这将允许您拥有自定义函数,如果您需要沿着这条路走下去,则可以使用方法。与类相比,类型非常有限。 |
![]() |
CPS · 当变量值为空时,在另一个变量中赋值 2 年前 |
![]() |
xris23 · 通过VBA选择命名范围,让用户直接编辑单元格 2 年前 |
![]() |
Stormer · 从Access格式化Excel单元格无效 2 年前 |
![]() |
j johns · 通过VBA将ascii art添加到命令提示符 2 年前 |
![]() |
BinaryCat · Excel-将单元格转换为具有成对数据的行 2 年前 |
![]() |
Waleed · 以下拆分函数的(0)表示什么? 2 年前 |
![]() |
smrmodel78 · VBA创建表格未选择正确的范围 2 年前 |