VB变量是指在运行时 其值可以被改变的量。不同于常量,变量是可以多次赋值的,因此此变量常用于保存程序中的临时数据。变量在程序中使用是非常频繁的,对此变量的声明和使用应熟练掌握。

声明级别本地和成员变量一个局部变量是一个过程中声明。一个成员变量属于 Visual Basic 类型; 它在模块级别,在类、 结构或模块,但不是能在任何过程的类、 结构或模块的内部声明。

共享和实例变量在类或结构中,成员变量的类别取决于共享。如果它用声明共享关键字,它是共享的变量,和它存在于类或结构的所有实例之间共享的一个副本。

否则它是实例变量,并且为类或结构的每个实例创建的单独副本。给定的一个实例变量副本是仅供类或结构在其中创建的实例。它不依赖于的类或结构的任何其他实例中的实例变量副本。

将数据类型声明作为声明语句中的子句可用于定义数据类型或所声明的变量的对象类型。您可以指定任何以下类型的变量:

基本数据类型,如Boolean,Long,或Decimal

复合数据类型,例如数组或结构

对象类型或在应用程序中或在另一个应用程序中定义的类

.NET Framework 类,如Label或TextBox

接口类型,如IComparable或IDisposable

您可以声明在一个语句中的多个变量,而无需重复的数据类型。在下面的语句中,变量i,j,并k声明为类型Integer,l和m作为Long,和x和y作为Single:

Dim i, j, k As Integer ' All three variables in the preceding statement are declared as Integer. Dim l, m As Long, x, y As Single ' In the preceding statement, l and m are Long, x and y are Single. 有关数据类型的详细信息,请参阅数据类型。对象的详细信息,请参阅对象和类并使用组件编程。

局部类型推理类型推理用来确定未声明的局部变量的数据类型As子句。编译器将推断变量的初始化表达式的类型的类型。这使您无需显式声明一个类型声明变量。在以下示例中,同时num1和num2强类型为整数。

Public Sub inferenceExample() ' Using explicit typing. Dim num1 As Integer = 3 ' Using local type inference. Dim num2 = 3End Sub如果你想要使用局部类型推理Option Infer必须设置为On。有关详细信息,请参阅本地类型推断和Option Infer 语句。

声明变量的特征生存期的变量是的时间段期间它是可供使用。一般情况下,变量存在,只要继续存在 (如过程或类) 声明的元素。如果该变量并不需要它的包含元素的生存期过后继续存在,则不需要执行任何特殊的声明中。如果变量需要一直存在时间超过其包含元素,则可以包括Static或Shared中的关键字及其Dim语句。有关详细信息,请参阅在 Visual Basic 中的生存期。

作用域的变量是一组的所有代码都可以引用它而无需限定其名称。声明位置取决于变量的作用域。位于给定区域中的代码可以使用而无需限定其名称在该区域中定义的变量。有关详细信息,请参阅Scope in Visual Basic。

变量的访问级别是有权访问它的代码的范围。这由访问修饰符 (如公共或专用) 中使用的Dim语句。有关详细信息1。

命名规则1 变量必须是以字母、汉字开头并且以字母、汉字、数字、下划线组成的字符串。最后一个字符可以是类型说明符,变量名中不能有空格。

2 变量名不能包含+ - * / !@ # ¥ ?小数点 等字符,且长度不能超过255。

3 不能用 Visual Basic 的保留字(例如End、Len、Sub等)作为变量名,但可以把保留字嵌入变量名中,同时变量名也不能是末尾带有说明符的保留字。

4 Visual Basic 不区分变量名和其他名字中字母的大小写,但习惯上,符号常量一般用大写字母定义。

在 Visual Basic 中执行应用程序期间,用变量临时存储数值。变量有名字(用来引用变量所包含的值的词)和数据类型(确定变量能够存储的数据的种类)。

可以把变量看作内存中存放未知值的所在处。例如,假定正在为水果铺编一个销售苹果的软件。在销售实际发生之前并不知道苹果的价格和销量。此时,可以设计两个变量来保存未知数— 将它们命名为 ApplePrice 和 ApplesSold。每次运行程序时,用户就这两个变量提供具体值。为了计算总的销售额,并且将结果显示在名叫 txtSales 的文本框中,代码应该是这样的:

Dim ApplePrice As Integer

Dim AppleSold As Integer '定义ApplePrice和AppleSold两个整数型变量

txtSales.txt = ApplePrice * ApplesSold

每次根据用户提供的数值,这个表达式返回不同的金额。由于有了变量,就可以设计一个算式,而不必事先知道实际的输入是多少。

在这个例子中,ApplePrice 的数据类型是货币,而 ApplesSold 的数据类型是整数。变量还可以表示许多其它数值,比如:文本数值、日期、各种数值类型,甚至对象也在此列。

存储和检索变量中的数据

用赋值语句进行计算,并将结果赋予变量:

ApplesSold = 10 '将值10赋给变量ApplesSold。

ApplesSold = ApplesSold + 1 '变量ApplesSold的值加1。

注意,例子中的等号是赋值符,并不是等于操作符;它将数值 (10) 赋予变量 (ApplesSold)。

声明变量声明变量就是事先将变量通知程序。要用Dim语句声明变量,Dim 语句提供了变量名:

Dim variablename [As type]在过程内部用 Dim 语句声明的变量,只有在该过程执行时才存在。过程一结束,该变量的值也就消失了。此外,过程中的变量值对过程来说是局部的— 也就是说,无法在一个过程中访问另一个过程中的变量。由于这些特点,在不同过程中就可使用相同的变量名,而不必担心有什么冲突和意想不到变故。

变量名在同一个范围内必须是唯一的。范围就是可以引用变量的变化域— 一个过程、一个窗体等等。

由于 Dim 语句中的可选的 As type 子句,可以定义被声明变量的数据类型或对象类型。数据类型定义了变量所存储信息的类型。String、Integer 和 Currency 都是数据类型的例子。变量也可以包含来自 Visual Basic 或其它应用程序的对象。Object、Form1 和TextBox都是 Visual Basic 对象类型或类的实例。

详细信息关于对象的更详细的信息,请参阅“用对象编程”和“用部件编程”。在本章后面的“数据类型”部分将详细讨论数据类型。

声明变量的其它方式不在过程内部,而在窗体、标准或类模块的声明段声明变量,这将使变量对模块中的所有过程有效。

用 Public 关键字声明变量,这将使变量在整个应用程序中有效。

用 Static 关键字声明一个局部变量,那么,即使过程结束,变量的值也仍然保留着。

隐式声明在使用一个变量之前并不必先声明这个变量。 例如,可以书写这样一个函数,在其中就不必在使用变量 TempVal 之前先声明它:

Function SafeSqr (num)

TempVal = Abs (num)

SafeSqr = Sqr (TempVal)

End Function

Visual Basic 用这个名字自动创建一个变量,使用这个变量时,可以认为它就是显式声明的。虽然这种方法很方便,但是如果把变量名拼错了的话,会导致一个难以查找的错误。例如,假定写了这样一个函数:

Function SafeSqr (num)

TempVal = Abs (num)

SafeSqr = Sqr (TemVal)

End Function

乍看起来,这两段代码好像是一样的。但是因为在倒数第二行把 TempVal 变量名写错了,所以函数总是返回 0。当 Visual Basic 遇到新名字,它分辨不出这是意味着隐式声明了一个新变量呢,还是仅仅把一个现有变量名写错了,于是只好用这个名字再创建一个新变量。

显式声明为了避免写错变量名引起的麻烦,可以规定,只要遇到一个未经明确声明就当成变量的名字,Visual Basic 都发出错误警告。

要显式声明变量,请

在类模块、窗体模块或标准模块的声明段中加入这个语句:(本质上就是禁止了声明静态变量。)

Option Explicit

—或—

在“工具”菜单中选取“选项”,单击“编辑器”选项卡,再复选“要求变量声明”选项。这样就在任何新模块中自动插入 Option Explicit 语句,但不会在已经建立起来的模块中自动插入;所以在工程内部,只能用手工方法向现有模块添加Option Explicit。

如果对包含 SafeSqr 函数的窗体或标准模块执行该语句,那么 Visual Basic 将认定 TempVal 和 TemVal 都是未经声明变量,并为两者都发出错误信息。随后就可以显式声明 TempVal。

Function SafeSqr (num)

Dim TempVal

TempVal = Abs (num)

SafeSqr = Sqr (TemVal)

End Function

因为 Visual Basic 对拼错了的 TemVal 显示错误信息,所以能够立刻明白是什么问题。由于 Option Explicit 语句有助于抓住这些类型的错误,所以最好在所有代码中使用它。

注意 Option Explicit 语句的作用范围仅限于语句所在模块,所以,对每个需要 Visual Basic 强制显式变量声明的窗体模块、标准模块及类模块,必须将 Option Explicit 语句放在这些模块的声明段中。如果选择“要求变量声明”,Visual Basic 会在后续的窗体模块、标准模块及类模块中自动插入 Option Explicit,但是不会将它加入到现有代码中。必须在工程中通过手工将 Option Explicit 语句加到任何现有模块中。

VB变量类型一、Numeric数据类型

1、Integer(类型符%)

Integer指的是-32768到+32767之间的整数,通常这个范围已经涵盖了大多数可能会用到的数字。如果认为要用到的数字可能会超出这个范围,可以考虑将其定义为Long。

2、Long(类型符&)****

这种数据类型垢数字有时又称为Long Integer。这种数据类型可以处理-2147483648到+2147483647之间的所有数字。与使用2个字节的Integer不同,它使用4字节内存存储数据。

3、Single(类型符!)****

Single适用于需要小数点的数字。Single可以处理-3.402823E38到-1.401298E-45之间的负值和1.401298E_45到3.402823E38之间的正值。

4、Double(类型符#)****

这种数据类型需要使用8字节内存来存储数据。如果必须处理超大范围的值,这种数据类型会很有用。

5、Currency(类型符@)****

这种数据类型主要适用于货币值。它需要8字节的内存来存储数据。这种数据类型具有固定的小数位数(4位)。

二、Byte数据类型

某些情况下,可能需要以单个字节的形式来访问数据。在这种情况下,就需要使用Byte数据类型。它主要包括0到255之间的整数。Byte数据类型通常用于访问二进制文件、图形和声音文件。

三、String数据类型(类型符$)****

String数据仅用于存储字符串。

四、Boolean数据类型

这种数据类型的值只能是True或False。对于Visual Basic,False关键字表示零值,True表示非零值。

五、Date数据类型

这种数据类型指的是能够转换为有效日期的数字或字符串数据。

本词条内容贡献者为:

闫晓东 - 副教授 - 中央民族大学信息工程学院