楼主 水星钓鱼 |
如果在变量的声明中没有说明数据类型,则变量的缺省数据类型为Variant。 举例如下:
其中变量2,变量3,变量4都是Variant数据类型。所以如果要声明一个变量为Variant的数据类型,只需Dim 加 变量名即可,无须As Variant。 一个Variant类型的变量可以存储任何类型的数据 举例如下:
对Variant类型的变量除了可以像其它标准数据类型一样操作外,Variant类型的变量还可以包含三个特定的值:Empty,Null,Error。其中Variant类型的变量在还未赋值前具有Empty值。如上例的变量3,在还未赋值前具有Empty值,可以通过Isempty函数来测试。这里不再详细阐述。 |
2楼 水星钓鱼 |
首先要说明的是,数组不是一种数据类型。简单的说就是一组数,这组数有个名称,就是数组名,其中的每个数据都是数组的元素。比如全所员工的姓名,姓名可以看做是数组名,每个员工的姓名是元素,而姓名一般是字符,没有人用数字做姓名,所以每个员工的姓名的数据类型是String。专业点说,数组是一种可包含多个元素的数据结构,数组中的每个元素类型相同,且按一定的顺序排列(用下标表示元素的顺序)。 举例如下:
如上所示,定义了一个数组变量。姓名是变量名,也是数组名,用来存储10个人的姓名。其中As String表示这个数组中的所有元素的数据类型都是字符型。第一个人的姓名是张朝阳,第10个人的姓名是马云。为什么第一个人的姓名不是姓名(1),而是姓名(0)呢,因为数组的元素的默认下限是从0开始的,当然这个下限可以改变。这里将不进行详细阐述。 如何区分数组变量与变量,数组变量是变量名+()。任何一个变量如果声明为变量名+()的形式,则这个变量就成了数组变量,可以用来存储一组数据。 如:Dim arr() As Integer,则arr就是一个数组变量。 数组中的每个元素的数据类型都一样,当然也可以都是Variant类型。这时,数组的每个元素都可以包含不同类型的数据。反过来,因为一个Variant类型的变量可以用来存储任意数据,所以它也可以用来存储数组。 举例如下:
从以上可以看出,arr2是一个元素的数据类型为Varaint的数组变量,它有10个元素。而arr1则是一个数据类型为Variant的非数组变量。当把一个数组变量赋值给arr1后(arr1=arr2),arr1可以像数组变量一样操作,即通过下标来引用它的元素(在这里就是Debug.Print arr1(i))。虽然一个包含数组的Variant类型的变量在概念上与元素的类型为Variant的数组变量是不一样的。但是可以用同样的方式来获得数组的元素,即变量名+(下标)的格式来引用数组的元素。 |
3楼 水星钓鱼 |
不是只有变量才有数据类型,当把一个值赋值给一个属性的时候,这个属性有个数据类型,函数的参数,函数的返回值都有数据类型,只有类型匹配的数据之间才能相互赋值。比如Array函数,它返回的是一个Variant类型的数据,只不过是它是一个包含了数组的Varaint。既可以用上面所说的变量名加下标的形式来引用。确却的说默认情况下Array函数返回的是一个Variant类型的数据,这个数据是一个一维的下限为0的数组。 举例如下:
如下所示
在EXCEL中,最常处理的对象就是Range对象(单元格区域)。当Range对象包含不止一个单元格时,Range.Value返回的是一个Varaint类型的数据,它是一个以行号为第一维,列号为第二维的二维数组,下限都是1。 前面说过只要数据类型是一样的,就可以相互赋值,因为Range.Value返回的是Variant类型,而Array返回的也是Variant类型,虽然一个是二维的数组,一个是一维的数组,但只要它们不是数组变量就可以相互赋值。所以同理,凡是结果是Variant类型的数组,都可以整体赋值。当然Varaint类型的数据可以被任意类型的数据赋值。 举例如下
|
4楼 LOGO |
学习了,留下脚印备查。 |
5楼 wqfzqgk |
VBA中的定义变量可能是最能适应的,尽量去掉这些东西,和以后的版本不兼容,养成良好的习惯 |