我的Excel VBA项目中有三个模块(标准模块,而不是类模块)。通过右键单击VBAProject并插入模块来添加其中一个。其中两个是通过执行“modules.add”添加的;我猜模块意味着模块表,对吧?所以,我的问题是:
1.模块在VBA中的含义是什么?
2.如何在添加模块表时知道创建了哪个模块?
3.为什么当我添加工作表时,没有出现模块?
答案 0 :(得分:1)
模块只是放置代码的地方。你可以把它看作一张纸,你可以写一些东西。
在Excel中,您可以将代码放在模块中,或者"在"后面。工作表(您称之为模块表)。始终由您手动添加模块。 "模块表"是工作表的一部分,因此每当您创建或删除工作表时,都会自动添加或删除BY EXCEL
当您在模块中放入一些代码和变量时,它可以立即从工作簿中的所有工作表中获得,取决于您如何声明变量,子和函数(私有/公共)
通常当一个人将代码放在工作表后面时,因为这个代码只是从该特定工作表中调用而只对它执行操作。我个人从不在工作表级别上工作有几个原因:
如果删除工作表,则会丢失其背后的所有代码。
如果您导出工作表,也可以导出代码。
如果复制工作表,则也会复制代码。
如果你想从另一个地方运行特定工作表背后的代码,你必须完全限定你的调用和变量,这是一个可怕的解决方案,也很无聊
我的建议是:在EXCEL中,永远不要在表单级别上工作,使用模块,如果你获得了相当数量的代码,请使用多个模块在逻辑组中组织它
答案 1 :(得分:0)
RE 1:模块就像一个单例类,已经初始化了,可以这么说。换句话说,模块的代码(公共属性/变量,公共方法等)始终可用,在尝试使用它之前不必继承实例,但是,模块中的所有数据都是可用的。 s属性/变量很常见"应用程序范围"
RE 2:它是"表单模块",而不是"模块表"。这意味着除了新添加的工作表在添加它时有一个模块。这之间没有区别,或者稍后在表单中添加模块。您可以通过按ALT + F11左键打开代码编辑器窗口并查看模块,类等
RE 3:默认情况下,由于安全原因,没有任何VBA代码添加到任何新工作表中。如果工作簿中包含宏(VBA代码),则需要格外注意,因此默认情况下,工作簿不是VBA(宏)工作簿。
最后但并非最不重要的是,请注意那里的工作簿。一个模块或另一个模块之间没有区别。创建模块的方式不会影响模块的行为方式,并且只有一种类型的模块" (以及Office应用程序中的一个"类模块")
答案 2 :(得分:0)
代表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