声明变量
要在 VBA 中显式声明变量,请使用 Dim
语句,后跟变量名称和类型。如果在未声明的情况下使用变量,或者未指定类型,则将为其分配 Variant
类型。
在模块的第一行使用 Option Explicit
语句强制在使用之前声明所有变量(请参阅始终使用 Option Explicit
)。
强烈建议始终使用 Option Explicit
,因为它有助于防止拼写错误/拼写错误并确保变量/对象保持其预期类型。
Option Explicit
Sub Example()
Dim a As Integer
a = 2
Debug.Print a
'Outputs: 2
Dim b As Long
b = a + 2
Debug.Print b
'Outputs: 4
Dim c As String
c = "Hello, world!"
Debug.Print c
'Outputs: Hello, world!
End Sub
可以使用逗号作为分隔符在一行上声明多个变量,但每个类型必须单独声明,否则它们将默认为 Variant
类型。
Dim Str As String, IntOne, IntTwo As Integer, Lng As Long
Debug.Print TypeName(Str) 'Output: String
Debug.Print TypeName(IntOne) 'Output: Variant <--- !!!
Debug.Print TypeName(IntTwo) 'Output: Integer
Debug.Print TypeName(Lng) 'Output: Long
变量也可以使用数据类型字符后缀($%&!#@)声明,但是越来越不鼓励使用它们。
Dim this$ 'String
Dim this% 'Integer
Dim this& 'Long
Dim this! 'Single
Dim this# 'Double
Dim this@ 'Currency
其他声明变量的方法是:
Static
喜欢:Static CounterVariable as Integer
当你使用 Static 语句而不是 Dim 语句时,声明的变量将在调用之间保留其值。
Public
喜欢:Public CounterVariable as Integer
公共变量可以在项目的任何过程中使用。如果在标准模块或类模块中声明了公共变量,那么它也可以在任何引用声明公共变量的项目的项目中使用。
Private
喜欢:Private CounterVariable as Integer
私有变量只能由同一模块中的过程使用。
来源和更多信息: