如何在模块中声明一个公共variables并访问工作表对象中的variables?

我有麻烦声明一个公共variables,并让我的工作表对象访问它。 例如,我有一个不会改变的string集合(这是否意味着它们是静态的?),在一个模块中定义:

Dim List1 As New Collection Public Sub Definitions() With List1 .Add "Steelers" .Add "Vikings" .Add "Packers" End With End Sub() 

之后,我想从一个工作表中的私人小组中调用List1:

 Private Sub CallThis() Call Definitions Dim Count as Variant For Each Count In List1 ... Next Count End Sub 

但是,我收到“variables未定义”错误。 我究竟做错了什么?

任何帮助表示赞赏! 谢谢。

List1没有在CallThis子例程的范围内定义。 使用Option Explicit来提醒你这种问题。 这应该在每个模块中进行,并要求声明所有variables。

 Option Explicit Public List1 As Collection Public Sub Definitions() Set List1 = New Collection With List1 .Add "Steelers" .Add "Vikings" .Add "Packers" End With End Sub 

为了使你的variables成为“公开”,你需要使用Public关键字而不是Dim来声明它。

请注意,我每次都将List1设置为一个新的集合。 否则,每次调用Definitions时,都会向集合中添加更多的项目。

哦,你的公共子文件的最后一行有一个语法错误,我纠正了。