long类型保留两位小数_VBA编程知识点(5)——数据类型判断与转换及四舍五入...

e3b69cf1cbf9ec306b9a839227ff85a0.png

VBA编程知识点(5)——数据类型判断与转换及四舍五入

学习自杨洋老师《全民一起VBA》

1. isdate函数

判断一个数据是否为日期类型,是,返回true;不是,返回false。

2.innumeric函数

判断一个数据是否为数值类型(integer、long、single、double、currency等),是,返回true;不是,返回false。

与公式isnumber的对比,执行结果和写法都比较相似,但innumeric的结果更精确。如给一个日期变量1/2/2019,公式isnumber返回的结果为true,因为日期本质上也是数值;而innumeric返回的结果为false。

3.并不是每一个数据类型都有对应的数据类型判断函数

Istring、isboolean等是没有的。

4.typename函数

返回数据的类型名称。如typename(5),返回字符串“Integer”。注意返回的数据类型的字符串中首字母是大写的。

判断单元格内的数据类型时,.value不可省略。

works.Cells(i, 2) = TypeName(Cells(i, 1).Value),正确返回单元格内的数据类型;

works.Cells(i, 2) = TypeName(Cells(i, 1)),全部返回为“Range”,因为cell为range对象。

5.数据类型转换

CBool转换为逻辑类型数据;CDate转换为日期类型数据;CStr转换为字符串类型数据;CInt转换为整数类型数据;CLng转换为long类型数据;CDbl转换为double类型数据;CCur转换为currency类型数据;CSng转换为single类型数据;CByte转换为byte类型数据;CDec转换为decimal类型数据。

VBA内置的自动类型转换的功能与上述转换函数的功能是一样的。使用类型转换函数的好处是可以让代码清晰易懂,此外某些情境下,自动类型转换失败时,只能使用转换函数。

转换成功的关键是:含义相同,大小相容

含义相同,例:一个日期型的字符串“2019-6-2”,一个数字“23”,本质上大家都是数值,因此可以转换为日期数据类型。而字符串“明天”,就无法转换成日期。

大小相容,例:一个integer转换为double是可以的,但一个double转换为integer就可以因为数值过大而无法转换。

6.含小数的转为整数(银行家舍入法与四舍五入法)

含小数的数值转换为整数时,vba中使用的银行家舍入法,而不是四舍五入。对于尾数为5的情况,舍入到最近的偶数,而不总是进位。如CInt(3.5)与CInt(4.5)的结果都是4。

VBA系统函数Round(x,n),仍然是银行家舍入法。但excel中的表格公式Round(x,n)是四舍五入的,在代码中可以这样写application.worksheetfunction.round(x,n)。

在word、powerpoint等程序中没有公式时,可以使用Int函数实现四舍五入,Int(x+0.5),但只能保留整数分部了,负数时要注意是+0.5,还是-0.5。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值