【VBA研究】VBA数据类型定义与效果

作者:iamlaosong

数据类型是对同一类数据的统称,如文本、日期、数值等。VBA里的数据类型有:字节型(Byte),整数型(Integer),长整数型(Long),单精度浮点型(Single),双精度浮点型(Double),货币型(Currency),小数型(Decimal),字符串型(文本型)(String),日期型(Date),布尔型(Boolean)。 VBA对数据类型的管控并不强,有一个Variant万金油类型,这种类型的变量干啥都行。此外,用Dim定义类型时,存在一个陷井,稍不注意就会掉落其中。

1、测试结果

通过测试发现,如果一条语句定义多个变量,只有最后一个变量有效果,比如下面的程序是不会报错的,也能实现其功能:

Sub tt()
    Dim ss, a, b, c, d As Integer
    a = 100
    b = 200
    c = a + b
    ss = "sum=" & c
    
    Cells(5, 1) = a
    Cells(5, 2) = b
    Cells(5, 3) = c
    Cells(5, 4) = ss
    
    a = 87654
    b = 12348
    c = a + b
    ss = "sum=" & c
    
    Cells(5, 5) = a
    Cells(5, 6) = b
    Cells(5, 7) = c
    Cells(5, 8) = ss
    
End Sub

执行结果是正常的:

100200300   sum=3008765412348100002    sum=100002

不过,如果定义写成:Dim ss, a, b, c As Integer,则会报“溢出”错误(c是整型)。

同样,如果定义写成:Dim a, b, css As Integer,则会报“类型不匹配”错误(ss是整型)。也就是说,只对定义中最后一个变量进行管控,这一点从C语言转过来的人有点想不通。

2、真实含义

实际上Dim a, b,c,ss As Integer的意思是:

dim a, dim b, dim c, dim ss as integer

变量a、b、c没有类型说明,那么VB就会给你使用默认的类型Variant。

3、严格管控

要严格的进行变量类型管控,一次只能定义一个变量,也可以写成下列形式:

Dim a As Integer, b As Integer, c As Integerss As String

===========================

附:VBA中的数据类型 

据类型(名称)

大小(字节)

描述

Boolean

2

逻辑值True或False

Byte

1

0到255的整数

Integer

2

–32,768到32,767的整数

Long

4

–2,147,483,648到2,147,483,647的整数

Single

4

单精度浮点数值

负数:–3.402823E38到–1.401298E–45

正数:1.401298E–45到3.402823E38

Double

8

双精度浮点数值

负数:–1.79769313486231E308到–4.94065645841247E–324

正数:4.94065645841247E–324到1.79769313486231E308

Currency

8

(放大的整数(译者:整数除以10000得到的数值,参见VBA帮助))使用在定点计算中:

–922,337,203,685,477.5808到922,337,203,685,477.5807

Decimal

14

+/–79,228,162,514,264,337,593,543,950,335没有小数点;

+/–7.9228162514264337593543950335小数点后有28位数字;

最小的非0数字是

+/–0.0000000000000000000000000001

Date

8

从100年1月1日到9999年12月31日的日期

String(变长字符串)

10字节+字符串长度

变长字符串最多可包含大约 20 亿 ( 2^31)个字符。

String(定长字符串)

字符串长度

定长字符串最多可包含大约65,400 个字符。

Object

4

对象变量用来引用Excel中的任何对象

Variant(带数字)

16

最高范围到Double类型的任何数值

Variant(带字母)

22字节+字符串长度

和变长字符串的范围一样

用户定义类型

(使用Type)

成员所需的数值

每个成员的范围和它的数据类型的范围一致



  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值