如何在模块外声明
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() 就足够了。
在我的工作表中我有两个模块,一个充满了子模块,另一个我想用于全局声明。
例如,在模块 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() 就足够了。