vba转换数据类型(VBA变量表示数组)
前言:
从上一篇文章开始,小编开始逐步向大家介绍如何通过VBA程序实现对EXCEL中数据的各种处理方法以及对其内置对象的操作(这里是上一篇文章链接)。
上一篇文章,我们介绍了变量的类型及声明方式,今天,我们将用一个篇幅介绍VBA各变量类型之间的相互转换和运算,然后,用一个篇幅介绍如何自定义函数,最后,用一个篇幅讲解变量的作用域。通过第一部分共四篇文章的介绍,大家将会对VBA中使用的变量及函数定义的方法有一个比较深刻的理解。
同上一篇文章一样,小编采用按钮 消息框的形式来试验程序结果,操作方法这里不再赘述,大家可以参看我们上一篇文章(这里是上一篇文章链接)。
一、将数值型变量转化为字符串型变量。
1.隐式转换
若将一个整型变量通过字符串连接运算符&相加,则得到一个字符串变量,也即在运算的过程中将整型变量的值隐式转换为了字符串并与另一个字符串变量连接,当然原整型变量的类型并不会发生改变,改变的只是值的类型。
例如,将字符串"这是个字符串:"赋值给字符串变量b,将整数5赋值给整型变量a,用连接符&将b和a连接起来,并赋值给字符串变量c。
在VBA编辑器中输入如下代码:
代码解释:
第一行:定义a为整型变量
第二行:定义b为字符串型变量
第三行:定义c为字符串型变量
第四行:将数值5赋值给整型变量a
第五行:将"这是个字符串:"赋值给字符串变量b
第六行:将字符串变量b连接整型变量a产生的新字符串复制给变量c
第七行:弹出消息框,内容为字符串变量c的值
切换到EXCEL界面,点击按钮:
若我们将上面代码中的连接符&改为加号 ,会发生什么呢?
修改后,点击按钮,运行程序,然而编译器报错:
加号(" ")运算符可以用于连接两个字符串,也可以用于两个数值变量的求和运算,此处将一个整形变量和一个字符串变量相加,编译器并不能够将整形变量的值5隐式转换为字符串变量,因此出错。
2.显式转换
此时我们需要用CStr()函数来显式地将整型变量5转换为字符串变量,再用加号连接两个字符串:
在编辑器中输入如下代码:
再运行程序,便可以正常执行了:
二、将字符串型变量转换为数值型变量
将字符串型变量转换为数值型变量必须满足一个条件,即字符串本身为数值,例如字符串"5"、"3.14"。
1.两个为数值的字符串相加示例,在编辑器中输入如下代码:
代码解释:
第一行:定义a为字符串型变量
第二行:定义b为字符串型变量
第三行:定义c为字符串型变量
第四行:将字符串"5"赋值给字符串变量a
第五行:将字符串"8"赋值给字符串变量b
第六行:将字符串变量a连接字符串变量b产生的新字符串赋值给变量c
第七行:弹出消息框,内容为字符串变量c的值
运行程序:
此时,因为a和b都是字符串,因此这里加号的作用不是求和运算,而是起到了连接字符串的作用,因此结果为"58",而不是13。
2.数值型变量和一个为数值的字符串变量相加:
代码解释:
第一行:定义a为整型变量
第二行:定义b为字符串型变量
第三行:定义c为整型变量
第四行:将5赋值给整型变量a
第五行:将字符串"8"赋值给字符串变量b
第六行:将整型变量a与字符串变量b求和产生的整型数值赋值给变量c
第七行:弹出消息框,内容为变量c的值
运行程序:
此时,编译器对字符串变量b进行了一个隐式转换,将其隐式转换为了整型变量。
三、浮点型变量转换为整型变量
在编辑器中输入如下代码:
代码解释:
第一行:定义a为单精度浮点型变量
第二行:定义a1为整型变量
第三行:定义b为单精度浮点型变量
第四行:定义b1为整型变量
第五行:将5.1的值赋值给a
第六行:将单精度浮点型变量a的值转换为整型并赋值给a1变量
第七行:将5.5的值赋值给b
第八行:将单精度浮点型变量b的值转换为整型并赋值给b1变量
第九行:用消息框输出字符串"a1="并连接a1变量,连接换行符(vbcrlf),连接字符串"b1=",连接b1变量的值。
运行程序:
CInt()函数为整型变量转换函数,CInt(a)的意思就是将单精度浮点型变量a的值转换为整型。由结果我们可以看出,整型转换函数是采用四舍五入的方式。如果我们想去除小数,只取整数部分怎么办呢?可以使用Int()函数:
再次查看结果:
但是如果我们想只要存在小数就向上进一位怎么办呢?仍然使用Int函数,修改如下代码:
运行程序:
好了,关于变量类型之间的相互转化,小编就介绍到这里。下一篇,我们将利用这两篇文章的知识,试着自定义几个能够实际在EXCEL中使用的函数,进入实际运用了。