模块和模块表有什么区别?

我在Excel VBA项目中有三个模块(标准模块,不是类模块)。 其中一个是通过右键单击VBAProject并插入一个模块添加的。 其中两个是通过执行“modules.add”添加的; 我想模块意味着模块表,对不对? 所以,我的问题是:
1.模块在VBA中的含义是什么?
2.如何知道在添加模块表单时创build了哪个模块?
3.为什么当我添加工作表时,没有模块出现?

模块只是一个放置代码的地方。 你可以把它看成一张纸,在那里你可以写一些东西。

在Excel中,您可以将代码放在模块中,也可以放在工作表的“后面”(您称之为模块)。 你总是手动添加一个模块。 “模块表”是工作表的一部分,因此无论何时创build或移除工作表,都会自动添加或删除“EXCEL”

当你把一些代码和variables放在一个模块中时,它可以立即从工作簿中的所有工作表中获得,取决于你如何声明variables,子类和函数(私有/公共)

通常,当把代码放在工作表的后面时,就是因为这个代码只能从特定的工作表中调用,而且只对其执行操作。 我personnaly从来没有在工作表级工作有几个原因:

  • 如果你删除了你的工作表,你会丢失它后面的所有代码。

  • 如果您导出工作表,也可以导出代码。

  • 如果您复制工作表,则也会复制代码。

  • 如果你想从另一个地方运行一个特定的工作表背后的代码,你必须完全限定你的调用和variables,这是一个可怕的解决scheme,也朴素无聊

我的build议是:在EXCEL中,从来没有在表单层次上工作,使用模块,如果你达到了相当数量的代码,使用多个模块在逻辑组中进行组织

RE 1:模块就像一个已经被初始化的单例类,可以这么说。 换句话说,模块的代码(公共属性/variables,公共方法等)总是可用的,在尝试使用它之前不必inheritance实例,但是模块的属性/variables中的所有数据都是通用的“应用程序-宽”

RE 2:它是“薄膜模块”,而不是“模块薄片”。 这意味着什么,但是新增加的工作表有一个模块,当你添加它。 有没有什么区别,或稍后添加一个模块到表。 你可以打开代码编辑器窗口,按ALT + F11查看模块,类等

RE 3:默认情况下,由于安全原因,没有将VBA代码添加到任何新表中。 如果工作簿中包含macros(VBA代码),则需要额外注意,因此默认情况下工作簿不是VBA(macros)工作簿。

最后但并非最不重要,请注意,模块之间没有区别。 创build模块的方式不会影响模块的行为方式,在Office应用程序(Excel,Word等)中只有一个“模块types”(以及一个“类模块”),

对于2号:

 Sub moduleAdd() Modules.Add 'Modules.Add qq = Modules.Count MsgBox "total added module by code = " & qq For ii = 1 To qq Set modu = Modules(ii) If ii = qq Then MsgBox "Newly added module = " & modu.Name Next End Sub