VBA中变量和变量作用

时间:2022-09-23 13:36:42
 
VBA中变量和变量作用
一、 变量
  变量是用于临时保存数值的地方 . 每次应用程序运行时 , 变量可能包含不同的数值 , 而在程序运行时 , 变量的数值可以改变 .
  为了说明为什么需要变量 , 可以按照如下步骤创建一个简单的过程 :
1) 创建一个名为 " 你叫什么名字 " 的过程 .
   2) 在过程中输入如下代码 :
   Inputbox " 输入你的名字 :"
3) 按下 F5 键运行过程 , 这时会显示一个输入框 , 要求输入你的名字 .
   4) 输入你的名字并按 " 确定 " 按钮 , 则结束该过程 .
你输入的名字到那里去了 ? 如何找到用户在输入框中输入的信息 ? 在这种情况下 , 需要使用变量来存储用户输入的结果 .
二、 变量的数据类型
  使用变量的第一步是了解变量的数据类型 . 变量的数据类型控制变量允许保存何种类型的数据 . 下表列出了 VBA 支持的数据类型 , 还列出了各种类型的变量所需要的存储空间和能够存储的数值范围 .
数据类型
存储空间
数值范围
Byte
1 字节
0 - 255
Booleam
2 字节
True 或者 False
Integer
2 字节
-32768 - 32767
Long( 长整型 )
4 字节
-2147483648 - 2147483647
Single
4 字节
负值范围 :
-3.402823E38 - -1.401298E-45
正值范围 :
1.401298E-45 - 3.402823E38
Double
8 字节
负值范围 :-1.79769313486232E308 - -494065645841247E-324
正值范围 :4.94065645841247E-324 - 1.79769313486232E308
Currency
8 字节
-922337203685477 - 922337203685477
Decimal
14 字节
不包括小数时 :
+/-79228162514264337593543950335
包括小数时 :
+/7.9228162514264337593543950335
Date
8 字节
1000 1 1 - 9999 12 31
Object
4 字节
任何引用对象
String( 长字符串)
10 字节 +1 字节 / 字符
0 - 20 亿
String( 固定长度)
字符串的长度
1 - 65400
Varient (数字)
16 字节
Double 范围内的任何数值
Varient (文本)
22 字节 +1 字节 / 字符
数据范围和变长字符串相同
(三)、表中 VBA 数据类型
我们的目标是选择需要存储空间尽量小的数据类型来保存所需要的数据,这正是表中提供各种数据类型存储空间的原因。例如,要保存诸如班级学生总数这样的小数字,那么 Byte 数据类型就足够了。在这种情况下,使用 Single 数据类型只是对计算机存储空间的浪费。
(四)、 Dim 语句创建变量 ( 声明变量 )
  以下我们将创建变量 . 创建变量可以使用 Dim 语句 , 创建变量通常成为 " 声明变量 " Dim 语句的基本语法如下 :
   Dim 变量名 AS 数据类型
  这条语法中的变量名代表将要创建的变量名 . 对变量的命名规则和对过程的命名规则相同 . 这条语句中的数据类型部分可以是表中的任何一种数据类型 .
  变量名必须以字母开始 , 并且只能包含字母数字和特定的特殊字符 , 不能包含空格句号惊叹号 , 也不能包含字符 @ & $ #. 名字最大长度为 255 个字符
  在 Dim 语句中不必提供数据类型 . 如果没有数据类型 , 变量将被定义为 Variant 类型 , 因为 VBA 中默认的数据类型是 Variant. 你知道这一点后 , 最初的反应也许是觉得应该不用自己决定数据类型 , 而将一切抛给 VBA. 这种观念是完全错误的 . 你必须决定选择使用何种数据类型。因为 Variant 数据类型占用存储空间较大( 16 22 字节)而且它将影响程序的性能。 VBA 必须辨别 Variant 类型的变量中存储了何种类型的数据。

(五)、 变量命名的惯例
  下表给出了推荐的变量命名惯例
数据类型
短前缀
长前缀
Array
a
ary
Boolean
f
bin
Byte
b
bit
Currency
c
cur
Double
d
dbl
Date/Time
dt
dtm/dat
Integer
i
int
Long
l
lng
Object
o
obj
Single
 
sng
String
s
str
Variant
v
var

(六)、变量赋值

声明变量后就可以给变量赋值。请注意下列语句中为数组变量赋值时索引数字的使用。
例如
   Dim i 人数 As Integer
   Dim i 考试成绩 As Integer
   Dim i As Integer

   i 人数 = inputbox(" 输入学生的人数: ")
   ReDim Preserve i 考试成绩 (i 数量 )
   For i = 1 to i 人数
   i 考试成绩 (i) = inputbox(" 输入考试成绩 "& i )
   Next
(七)、变量的作用域
 
  在过程中声明 , 该变量只能在该过程中使用 , 其他过程中不能使用这个变量和常量 , 这中变量成为局部变量或过程级变量;在模块顶部声明的变量称为模块级变量,该变量在该模块的所有过程中都可以使用。
  还有一种等级的作用域称为公共级。公共级变量可以在应用程序的任何过程中使用,不论过程和变量是否定义在一个模块。这就使得公共级变量在使用中十分灵活,但是公共级变量在程序运行时一直保留在内存中,这样就占用了系统资源。要创建公共级变量,可以用 Public 语句,具体语法如下:
   Public variablename As datatype
  要创建公共级常量,具体语法如下:
   Public const CONSTANAME datatype = value
  公共级变量或常量必须在模块顶部的 通用声明 区域中定义。