Dim 语句

声明变量和分配存储空间。

语法

Dim [ WithEvents ] varname [ ( [ 下标 ] ) ] [ As [ New ] type ] [ , [ WithEvents ] varname [ ( [ subscripts ] ) ] [ As [ New ] type ] ] ..

Dim 语句语法包含以下部分:

Part 说明
WithEvents 可选。 指定varname对象变量关键字被用于响应 ActiveX 对象触发的事件。 “WithEvents”只在类模块中有效。 可以使用 WithEvents 声明任意数量的单个变量,但不能使用 WithEvents 创建数组。 您也不能将“New”和“WithEvents”一起使用。
varname 必填。 变量的名称;紧跟命名约定的标准变量。
下标 可选。 数组变量的维度;达到 60 多维度可能会被声明。 下标参数使用以下语法:[ lowerTo ] upper [ , [ lowerTo ] upper ] ..

如果未在 lower 中显式声明,则数组的下限由 Option Base 语句控制。 如果没有 Option Base 语句,则下限为零。
New 可选。 启用对象的隐式创建的关键字。 如果在声明对象变量时使用 New ,则会在首次引用对象变量时创建对象的新实例,因此不必使用 Set 语句来分配对象引用。

New 关键字不能用于声明任何内部数据类型的变量或声明依赖对象的实例,并且不能与 WithEvents 一起使用。
type 可选。 变量的数据类型;可以是当前不支持的字节布尔值、整数货币精度、双精度小数 () 、日期字符串 ((对于可变长度字符串) ),对于固定长度字符串) 、ObjectVariant用户定义类型对象类型,可以是字符串长度 (。 对声明的每个变量使用单独的 As类型 子句。

备注

使用 Dim模块级别上声明的变量对模块中的所有过程可用。 在过程级别上,变量仅在过程中可用。

在模块或过程级别使用 Dim 语句声明变量的数据类型。 例如,以下语句将变量声明为 Integer

Dim NumberOfEmployees As Integer 

还可使用 Dim 语句声明变量的对象类型。 下面为工作表的新实例声明了一个变量。

Dim X As New Worksheet 

如果在声明对象变量时未使用 New 关键字,则必须使用 Set 语句为引用对象的变量分配现有对象,然后才能使用它。 在分配对象之前,声明的对象变量将具有特殊值 Nothing ,这表示它不引用对象的任何特定实例。

您还可以将 Dim 语句与空圆括号一起使用来声明动态数组。 声明动态数组后,在过程中使用 ReDim 语句来定义数组中的维度和元素数。 如果尝试为在 PrivatePublicDim 语句中显式指定大小的数组变量重新声明维度,则会发生错误。

如果未指定数据类型或对象类型,并且模块中没有 Def_type_ 语句,则变量默认为 Variant 。 在初始化变量时,数值变量将初始化为 0,可变长度字符串将初始化为零长度字符串 (""),固定长度字符串将使用零填充。 将“变量”变量初始化为。 用户定义类型的变量的每个元素将会像它们是单独的变量那样初始化。

注意

在过程中使用 Dim 语句时,您通常会将 Dim 语句置于过程的开头。

示例

此示例演示用于声明变量的 Dim 语句。 它还显示了用于声明数组的 Dim 语句。 数组下标的默认下限为 0,可以使用 Option Base 语句在模块级别重写。

' AnyValue and MyValue are declared as Variant by default with values 
' set to Empty. 
Dim AnyValue, MyValue 
 
' Explicitly declare a variable of type Integer. 
Dim Number As Integer 
 
' Multiple declarations on a single line. AnotherVar is of type Variant 
' because its type is omitted. 
Dim AnotherVar, Choice As Boolean, BirthDate As Date 
 
' DayArray is an array of Variants with 51 elements indexed, from 
' 0 thru 50, assuming Option Base is set to 0 (default) for 
' the current module. 
Dim DayArray(50) 
 
' Matrix is a two-dimensional array of integers. 
Dim Matrix(3, 4)As Integer 
 
' MyMatrix is a three-dimensional array of doubles with explicit 
' bounds. 
Dim MyMatrix(1 To 5, 4 To 9, 3 To 5)As Double 
 
' BirthDay is an array of dates with indexes from 1 to 10. 
Dim BirthDay(1 To 10)As Date 
 
' MyArray is a dynamic array of variants. 
Dim MyArray()

另请参阅

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。