我的Excel项目中有三个模块(标准模块,而不是类模块)。其中一个是通过右键单击VBAProject并插入一个模块来添加的。其中两个是通过执行“modules.add”添加的;我猜模块意味着模块表,对吗?所以,我的问题是:
发布于 2014-11-05 08:01:38
模块只是一个放置代码的地方。你可以把它看作是一张纸,在那里你可以写一些东西。
在Excel中,您可以将代码放在模块中,或者“隐藏”工作表(您称之为模块)。模块总是由您手动添加。“模块表”是工作表的一部分,因此,每当您创建或删除工作表时,EXCEL就会自动添加或删除它。
当您在模块中放置一些代码和变量时,它可以立即从工作簿中的所有工作表中获得,这取决于您如何声明变量、子和函数(私有/公共)。
通常,当一个人将代码放在工作表后面时,这是因为这段代码只需要从该特定工作表中调用,并且只对其执行操作。我个人从不在工作表级别工作,原因有几点:
我的建议是:在EXCEL中,永远不要在工作表级别上工作,使用模块,如果达到相当数量的代码,则使用多个模块将其组织成逻辑组。
发布于 2014-11-05 07:50:16
Re1:一个模块就像一个已经初始化过的单例类。换句话说,模块的代码(公共属性/变量、公共方法等)总是可用的,在尝试使用它之前不需要继承实例,但是,模块属性/变量中的所有数据都是常见的“应用程序范围”。
它是“工作表模块”,而不是“模块页”。这只意味着新添加的工作表在添加时有一个模块。这样做与稍后在工作表中添加一个模块没有什么区别。您可以通过按ALT+F11打开代码编辑器窗口,查看模块、类等。
Re3:默认情况下,由于安全原因,不向任何新工作表添加任何VBA代码。如果工作簿中包含宏(VBA代码),则需要额外注意,因此默认情况下,工作簿不是VBA(宏)工作簿。
最后但并非最不重要的一点是,请注意一个模块与另一个模块之间没有区别。创建模块的方式不影响模块的行为方式,Office应用程序(Excel、Word等)中只有一种“模块类型”(以及一种“类模块类型”)
发布于 2014-11-05 08:05:37
数字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 Subhttps://stackoverflow.com/questions/26751768
复制相似问题