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

时间:2016-09-09 17:12:49

标签: excel excel-vba vba

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

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

但是,我收到“未定义变量”错误。我做错了什么?

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

1 个答案:

答案 0 :(得分:1)

List1未在CallThis子例程的范围内定义。使用Option Explicit提醒您出现此类问题。这应该放在每个模块中,并要求声明所有变量。

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

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

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

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