integer转long类型_VBA编程知识点(1)——数据类型

本文介绍了VBA编程中的数据类型,包括Integer和Long的转换,自动类型转换,数据类型关键字,以及如何标识数据类型。示例展示了在VBA中如何处理不同类型的数据,并解释了可能遇到的问题和解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3a558559530e2ce72733f031c2768dde.png

VBA编程知识点(1)——数据类型

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

1. 数据类型

声明变量时,一般要使用“dim 变量 as 数据类型”语句,确定变量的数据类型。这样做的好处是减少内存占用,提高程序运行速度。如果没有使用As指定一个变量的类型,那么该变量被默认属于一种特殊类型——变体类型Variant。

变体类型的实现原理:

(1)用一个最大尺寸的内存单元存放数据;

(2)每次重新为变量赋值时,根据数据类型调整自身标识。

这样方便了代码的编写,但增大了内存占用,降低了程序运行速度。更严重的是,变体类型每次调整自身标识时,可能并不是我们希望的类型。

2. 自动类型转换

为编程方便,降低初学的难度,vba提供了自动类型转换的功能。

当把数据赋值给不同类型的变量时,VBA首先尝试将其转换成该类型。如果确实无法转换,再提示“类型不匹配”错误。

自动类型转换是默认功能,虽然好,但有时候也容易使人产生困惑。

示例1:

Dim a as integer

a = "23" 可以转换为数字23,赋值成功

a = "你好" 不能转换为任何数字,提示出错

示例2:

处理数据如下图所示:

5e153d5393f2fbf662d8e7026eb34245.png

代码如下

Sub 计算()

Dim i As Integer, a As Integer, b As Integer

For i = 3 To 7 Step 1

a = Cells(i, 1) '当运行到第6行时,字符类型的数字转换为integer类型

b = Cells(i, 2) '当运行到第6行时,字符类型的数字转换为integer类型

Cells(i, 3) = a + b

Next

End Sub

3. 数据类型关键字

文本——string

日期——date

逻辑——boolean

对象——object

变体——variant

数字——integer, byte, long, single, double, currency, decimal

Integer:占用内存2字节,不支持小数,取值范围-32768到+32767

Long:占用内存4字节,不支持小数,取值范围-2147483648到+2147483647

Double:占用内存8字节,支持小数,取值范围-1.798*10308~-4.9*10-324到+4.9*10-324~+1.798*10308。因为它使用了科学计数法,同时小数的位数又是灵活的,所以不够精确,结果可能会有误差。

Currency:占用内存8字节,支持小数,取值范围-922337203685477.5808~+922337203685477.5807。不过它的小数固定只有四位小数。因为小数只有四位,所以计算精确,没有误差。

4. 用符号标识数据类型

赋值语句的默认操作过程:

vba总是从右往左执行赋值操作。执行右边表达式时,vba会分配一个临时存储空间存放运算结果。这个临时存储空间的数据类型判断依据是参与运算的数据或变量的类型,其中最大的数据的类型就是该临时存储空间的数据类型。但除法运算操作例外,一律分配Double类型空间。这种判断方式可能带来溢出错误。如a = 20000 * 2赋值时,由于运算结果为40000,而临时存储空间判断为integer,就是发生溢出错误。

Integer——%

Long——&

Single——!

Double——#

Currency——@

String——$

这些符号可以声明数字和变量的类型,符号应该紧随数字或变量后面,不要空格。其中&又用于字符串的连接操作,&与数字或变量之间有空格表格连接运算,没有空格表示声明为long类型

示例:

Dim a&, b#等效于dim a as long, b as double

5. vba代码中的特别符号

下划线“_”表示把一行长代码分成若干行书写,“_”前需要有空格。但一个长字符串不能使用“_”来拆分成若干行。

示例:

If score > 60 and grade < 5 _

Or score > 80 and grade >= 5 _

Or score > 45 and category = "留学生" then

以上相当于一行代码。

冒号“:”表示将多个语句拼凑在同一行书写,“:”前后需要有空格。

示例:a = 1 : b = 2 : c = 3,这相当于三条赋值语句。

"^"表示乘方运算,有误差。

示例:a = 3 ^ 3

""表示整数除法,先做正常除法,然后只取商的整数部分作为运算结果。

"/"表示正常除法

示例:11 / 3 =3.66666666;11 3 = 3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值