如何在模块外声明

How to declare outside of module

在我的工作表中我有两个模块,一个充满了子模块,另一个我想用于全局声明。

例如,在模块 2 中,我想:

Sub Declarations()

Public Setup As Worksheet
Public Squad As Worksheet
Public Bio As Worksheet

Set Setup = Sheets("Setup")
Set Squad = Sheets("Squad")
Set Bio = Sheets("Bio")

End Sub

然后在每个子中以:

开头
call Declarations

但这不起作用。我已经阅读了大约 20 个关于此事的主题,但很难理解。看别人的代码,和自己想实现的完全不一样,感觉很简单,和自己的工作联系不上。 "passing from subs or functions as parameters" 这样的短语 - 这到底是什么意思?

在我简单的头脑中,它就像 1.转到声明 2.阅读那些东西 3. 带着这些信息回到我的潜艇

即使我在同一个模块中有多个 sub,我也不知道如何在不同的 sub 中存储整数。例如,我有:

'2. Prepare Vectors
'--------------------------------------------------
Set Clubs = Sheets("Database").Range("DR:DR")

For Each C In Clubs

    If IsEmpty(C) Then Exit For

    If C = Squad.Range("A1") Then

        Select Case C.Offset(0, -112).Value

            Case Is = "G"

                Gc = Gc + 1
                ReDim Preserve Goalkeepers(Gc)
                Goalkeepers(Gc) = C.Offset(0, -121)

            Case Is = "D"

                Dc = Dc + 1
                ReDim Preserve Defenders(Dc)
                Defenders(Dc) = C.Offset(0, -121)

            Case Is = "M"

                Mc = Mc + 1
                ReDim Preserve Midfielders(Mc)
                Midfielders(Mc) = C.Offset(0, -121)

            Case Is = "A"

                Ac = Ac + 1
                ReDim Preserve Attackers(Ac)
                Attackers(Ac) = C.Offset(0, -121)

        End Select

    End If

Next C
'--------------------------------------------------

其中我给常量 Gc、Dc、Mc、Ac 赋值。我已经尝试在不同的子模块中进一步使用这些常量,它只是将它们视为 "empty"。我理解这一点,因为没有存储值,而是将它们设置为

Public Gc as Integer

也不行。

抱歉啰嗦。非常感谢任何帮助。

Public 变量需要在您的 Sub 外部定义,在模块本身中。

Public Setup As Worksheet
Public Squad As Worksheet
Public Bio As Worksheet

Sub Declarations()
  Set Setup = Sheets("Setup")
  Set Squad = Sheets("Squad")
  Set Bio = Sheets("Bio")
End Sub

请注意,public 变量将在后续调用您的 Sub 时保留它们的值。在这个具体示例中,可能在开始时调用一次 Declarations() 就足够了。