首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模块和模块表有什么区别?

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

Stack Overflow用户
提问于 2014-11-05 07:27:15
回答 3查看 5.3K关注 0票数 0

我的Excel项目中有三个模块(标准模块,而不是类模块)。其中一个是通过右键单击VBAProject并插入一个模块来添加的。其中两个是通过执行“modules.add”添加的;我猜模块意味着模块表,对吗?所以,我的问题是:

  1. 模块在VBA中意味着什么?
  2. 我如何知道在添加一个模块时创建了哪个模块?
  3. 为什么当我添加一个工作表时,没有一个模块出现?
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-05 08:01:38

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

在Excel中,您可以将代码放在模块中,或者“隐藏”工作表(您称之为模块)。模块总是由您手动添加。“模块表”是工作表的一部分,因此,每当您创建或删除工作表时,EXCEL就会自动添加或删除它。

当您在模块中放置一些代码和变量时,它可以立即从工作簿中的所有工作表中获得,这取决于您如何声明变量、子和函数(私有/公共)。

通常,当一个人将代码放在工作表后面时,这是因为这段代码只需要从该特定工作表中调用,并且只对其执行操作。我个人从不在工作表级别工作,原因有几点:

  • 如果删除工作表,则会丢失它背后的所有代码。
  • 如果您导出一个工作表,您也导出代码。
  • 如果您复制一个工作表,您也复制代码。
  • 如果您想从另一个地方运行特定工作表后面的代码,则必须完全限定您的调用和变量,这是一个很糟糕的解决方案,也很无聊。

我的建议是:在EXCEL中,永远不要在工作表级别上工作,使用模块,如果达到相当数量的代码,则使用多个模块将其组织成逻辑组。

票数 1
EN

Stack Overflow用户

发布于 2014-11-05 07:50:16

Re1:一个模块就像一个已经初始化过的单例类。换句话说,模块的代码(公共属性/变量、公共方法等)总是可用的,在尝试使用它之前不需要继承实例,但是,模块属性/变量中的所有数据都是常见的“应用程序范围”。

它是“工作表模块”,而不是“模块页”。这只意味着新添加的工作表在添加时有一个模块。这样做与稍后在工作表中添加一个模块没有什么区别。您可以通过按ALT+F11打开代码编辑器窗口,查看模块、类等。

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

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

票数 0
EN

Stack Overflow用户

发布于 2014-11-05 08:05:37

数字2:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26751768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档