vba 数值转文本_VBA篇 4.数据类型

本来上一篇只是想简单介绍一下对象,不小心把常用对象也写了,内容可能比较多,不过没关系,大致看看就行了,看不下去也没事,整个“基础篇”都是做了解就行,真要学东西还是自己上手做东西,用的多了就记住了。

这次简单介绍一下数据类型。

数据类型是什么?

首先要了解什么是数据类型,就像一篇文章可能包括“中文”、“英文”、“数字”一样,在程序中数据也分为“文本”、“数值”和日期等类型。不同的数据类型占用的内存空间不同,运算也不相同。(一般不用考虑占用空间的问题。)

在VBA中定义数据类型一般用Dim表示。

Dim表示变量,VBA中也可以用Const定义常量。变量和常量的区别是变量在定义之后可以改变。常量是定义之后就不能再改变了。如果不知道用啥就用变量就可以。

Sub HeWishTest()
    '定义一个文本变量 赋值为 "何未生"
    Dim VarStr AS String
    VarStr = "何未生"
    '定义一个文本常量 赋值为 "何未生"
    Const ConstStr AS String = "何未生"
    '变量是可以改变的
    VarStr = "改变"
    '现在VarStr就成了 "改变" 了
End Sub

String

字符串类型,表示文本内容,用英文双引号引起来。

Sub HeWishTest()
    '定义一个文本变量 赋值为 "何未生"
    Dim VarStr AS String
    VarStr = "何未生"
    '文本变量可以用加号拼接
    VarStr = VarStr + "HeWish"
    'VarStr改为 "何未生HeWish"
    '在立即窗口打印结果 何未生HeWish
    Debug.Print VarStr
End Sub

Long

长整型数值,可以表示-2147483648 ~ 2147483647之间的整数。除了Long,VBA还有个Integer(整型数值)可以表示整数,可以表示的区间为-32768 ~ 32767。使用时如果不能保证数据不会超出32767,请使用Long类型。注意数值型不要用引号引起,直接写就行。

Sub HeWishTest()
    '定义一个长整型变量 赋值为 65536
    Dim VarLong AS Long
    VarLong = 65536
    '数值型可以用加减乘除直接运算 计算除以2
    VarLong = VarLong/2
    '在立即窗口打印结果 32768
    Debug.Print VarLong
End Sub

Double

双精度浮点型。在表示负数时可以表示: -1.79769313486231E308 ~ -4.94065645841247E-324;在表示正数时可以表示: 4.94065645841247E-324 ~ 1.79769313486231E308。

与之对应的是Single(单精度浮点型),在表示负数时可以表示: -3.402823E38 ~ -1.401298E-45;在表示正数时可以表示: 1.401298E-45 ~ 3.402823E38

双精度浮点型可以表示小数点14位,单精度浮点型可以表示小数点后6位,多余的会四舍五入进位。

Sub HeWishTest()
    '定义一个双精度浮点数 赋值为 1.23456789
    Dim VarDouble AS Double
    VarDouble = 1.23456789
    '同样可以用加减乘除直接运算 计算除以2
    VarDouble = VarDouble/2
    '在立即窗口打印结果 0.617283945
    Debug.Print VarDouble
    
    '定义一个单精度浮点数 赋值为 1.234567
    Dim VarSingle AS Single
    VarSingle = 1.23456789
    '在立即窗口打印 1.234568
    Debug.Print VarSingle
    '同样可以用加减乘除直接运算 计算除以2
    VarSingle = VarSingle/2
    '在立即窗口打印结果 0.6172839 猜测可能是因为没有后续运算,导致数值类型未正确识别的Bug
    Debug.Print VarSingle
    '加1
    VarSingle = VarSingle + 1
    '在立即窗口打印结果 1.617284 保留小数点后6位数
    Debug.Print VarSingle
End Sub

Boolean

布尔型。只有两个选项,真和假,要么“True”要么“False”。

Sub HeWishTest()
    '定义一个布尔型 赋值为 true
    Dim VarBool As Boolean
    VarBool = True
    '如果为真则打印“真”,否则打印“假”
    If VarBool Then
        Debug.Print "真"
    Else
        Debug.Print "假"
    End If
End Sub

Date

日期类型,可以表示日期和时间。可以表示的日期范围是100年1月1日 ~ 9999年12月31日;可以表示的时间范围是:0:00:00 ~ 23:59:59。

之前面像对象那篇提过Range的Value属性和Value2属性的区别,其中Value属性读取到的 设置为日期格式的 单位格内容 会读取为Date类型。

Sub HeWishTest()
    '定义一个日期型变量,读取A1单元格的日期
    Dim VarDate As Date
    VarDate = Range("A1").Value
    '在立即窗口打印结果  2020/8/23
    Debug.Print VarDate
    
    '直接赋值日期的话要加双引号
    VarDate = "2020/8/23"
    '分别打印年、月、日   
    Debug.Print Year(VarDate)
    Debug.Print Month(VarDate)
    Debug.Print Day(VarDate)
End Sub

其他

上述五种就是VBA中最常用的数据类型,在不熟悉的情况下Long和Integer就用Long;Double和Single就用Double,可以避免一些错误,等熟悉了之后再做区分也可以。

除了上面的几种之外还有Object类型以及枚举Enum型的,这两种我都没用过,不影响写出完整的程序,感兴趣的可以自己去找资料看看。还有Variant类型,这个不建议使用。

结语

其实VBA在写的时候是可以不声明的,可以直接用,但是为了代码的可读性还是建议在代码块开始处定义好变量。当然,也可以只声明变量不声明类型。

'在模块最前面输入 Option Explicit 可以开启强制声明变量,在存在 没有声明的变量 时会报错
Option Explicit

Sub HeWishTest()
    '不声明直接用 默认可以直接使用,在有“Option Explicit”时会提示“变量未定义”。
    VarDate = "2020/8/23"
    
    '只声明变量,不声明类型
    Dim VarStr
    VarStr = "测试"
    
    '同时声明多个变量,用英文逗号隔开即可
    Dim VarStr2 AS String,VarDouble AS Double
    VarStr2 = "测试2"
    VarDouble = 123.456
    
End Sub

整个系列在语雀知识库同步,感觉语雀上的目录更明确一些,有兴趣可以去看看

VBA从入门到放弃 · 语雀​www.yuque.com
c7b78d61cfea0d10573814cffea4f986.png
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页