Excel VBA 变量值范围 - 为所有子变量赋值
Excel VBA Variable value Scope - assign value to a variable for all subs
我正在编写一个包含多个子模块的模块,我需要一些变量在所有模块中具有相同的值。我知道将变量声明为
Public varname as vartype
但是如何为这样的变量分配全局值?
谢谢
对于工作表对象(与此相关的任何对象),您需要执行以下操作:
在标准代码模块中:
Public varName As Excel.Worksheet
在Workbook_Open()
事件中:
Private Sub Workbook_Open()
Set varName = Sheets("mySheet")
End Sub
然后您可以在该工作簿的任何其他模块中引用 varName
,它将指向您的工作表对象。
从您的 question/comments 看来,您实际上想要某种对象常量,这在 VBA 中无法实现 - 请参阅 了解更多信息。
如果您指的是 值 数据类型,例如 String
、Integer
或 Long
,那么您可以使用常量而不是变量,但是常量的值一旦被声明就不能改变(类似于 'constant' 的定义)即
Public Const someName As String = "Macro Man"
Public Const someNumber As Long = "1234567890"
Public Const someInt As Integer = "1453"
我正在编写一个包含多个子模块的模块,我需要一些变量在所有模块中具有相同的值。我知道将变量声明为
Public varname as vartype
但是如何为这样的变量分配全局值?
谢谢
对于工作表对象(与此相关的任何对象),您需要执行以下操作:
在标准代码模块中:
Public varName As Excel.Worksheet
在Workbook_Open()
事件中:
Private Sub Workbook_Open()
Set varName = Sheets("mySheet")
End Sub
然后您可以在该工作簿的任何其他模块中引用 varName
,它将指向您的工作表对象。
从您的 question/comments 看来,您实际上想要某种对象常量,这在 VBA 中无法实现 - 请参阅
如果您指的是 值 数据类型,例如 String
、Integer
或 Long
,那么您可以使用常量而不是变量,但是常量的值一旦被声明就不能改变(类似于 'constant' 的定义)即
Public Const someName As String = "Macro Man"
Public Const someNumber As Long = "1234567890"
Public Const someInt As Integer = "1453"