声明变量

声明变量时,通常使用 Dim 语句。 声明语句可以置于创建过程中以创建过程级变量。 也可以置于声明部分的模块顶部,以创建模块级变量。

下面的示例创建变量并指定 String 数据类型

Dim strName As String 

如果该语句出现在某个过程中,那么只能在该过程中使用变量 strName。 如果语句出现在模块的声明部分,则变量 strName 可用于该模块内的所有过程,但不适用于项目中其他模块内的过程。

若要使此变量适用于项目中的所有过程,请在其前面添加 Public 语句,如以下示例所示:

Public strName As String 

有关命名变量的信息,请参阅 Visual Basic 命名规则

变量可以声明为以下数据类型之一:BooleanByteIntegerLongCurrencySingleDoubleDateString(适用于可变长度的字符串)、String * length(适用于固定长度的字符串)、ObjectVariant。 如果不指定数据类型,则默认分配 Variant 数据类型。 此外,你也可以使用 Type 语句创建用户定义的类型

你可在一个语句中声明多个变量。 若要指定数据类型,必须为每个变量包括数据类型。

在下面的语句中,变量 intXintYintZ 声明为 Integer 类型。

Dim intX As Integer, intY As Integer, intZ As Integer 

在下面的语句中,intXintY 都声明为 Variant 类型;只有 intZ 声明为 Integer 类型。

Dim intX, intY, intZ As Integer 

你不需要在声明语句中提供变量的数据类型。 如果省略数据类型,变量将为 Variant 类型。

在上面的语句中将 xy 声明为整数的缩写是:

Dim intX%, intY%, intZ as Integer

该类型的缩写是:% -integer; & -long; @ -currency; # -double; ! -single; $ -string

Public 语句

使用 Public 语句声明公共模块级变量。

Public strName As String 

可以在项目中的任何过程中使用公共变量。 如果在标准模块类模块中声明公共变量,则还可以在引用声明该公共变量项目的任何项目中使用该变量。

Private 语句

使用 Private 语句声明私有模块级变量。

Private MyName As String 

私有变量仅能由相同模块中的过程使用。

注意

当在模块级别下使用时,Dim 语句等效于 Private 语句。 为了使代码更易于读取和解释,你可能需要使用 Private 语句。

Static 语句

当使用 Static 语句而非 Dim 语句来声明过程中的变量时,声明的变量将在该过程的两次调用之间保留其值。

Option Explicit 语句

通过在赋值语句中使用一个变量,即可在 Visual Basic 中隐式声明此变量。 隐式声明的所有变量都是 Variant 类型。 相比大多数其他变量,Variant 类型变量需要更多的内存资源。 如果显式声明变量并使用特定的数据类型,应用程序将更加高效。 显式声明所有变量可以减少命名冲突错误和拼写错误的发生。

如果不希望 Visual Basic 进行隐式声明,可在任何过程之前将 Option Explicit 语句置于模块中。 此语句要求显式声明模块内的所有变量。 如果模块包含 Option Explicit 语句,那么当 Visual Basic 遇到一个之前没有声明的变量名或拼写错误的变量名时,就会发生编译时错误。

你可以在 Visual Basic 编程环境中设置一个选项,以便在所有新模块中自动包含 Option Explicit 语句。 有关如何更改 Visual Basic 环境选项的帮助,请参阅应用程序的文档。 请注意,此选项不会更改已编写的现有代码。

注意

必须显式声明固定数组和动态数组。

声明自动化对象变量

当使用一个应用程序来控制其他应用程序的对象时,应设置对其他应用程序类型库的引用。 设置引用后,可以根据对象变量最特定的类型声明对象变量。 例如,如果在 Microsoft Word 中设置对 Microsoft Excel 类型库的引用,则可以在 Word 中声明一个 Worksheet 类型的变量,以表示 Excel Worksheet 对象。

如果使用的是其他应用程序来控制 Microsoft Access 对象,在大多数情况下,可以根据对象变量最特定的类型来声明对象变量。 此外,你也可以使用 New 关键字自动创建对象的新实例。 但是,可能需要指示这是 Microsoft Access 对象。 例如,当你从 Visual Basic 中声明一个对象变量来表示 Access 窗体时,必须将 Access Form 对象与 Visual Basic Form 对象区分开来。 在变量声明中包含类型库的名称,如下例所示:

Dim frmOrders As New Access.Form 

某些应用程序无法识别各个 Access 对象类型。 即使从这些应用程序设置对 Access 类型库的引用,也必须将所有 Access 对象变量声明为 Object 类型。 也不能使用 New 关键字来创建对象的新实例。

下面的示例展示了如何声明一个变量,以表示来自无法识别 Access 对象类型的应用程序的 Access Application 对象的实例。 然后,应用程序会创建 Application 对象实例。

Dim appAccess As Object 
Set appAccess = CreateObject("Access.Application")

要确定应用程序支持何种语法,请参阅应用程序的文档。

另请参阅

支持和反馈

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