zoukankan      html  css  js  c++  java
  • Excel VBA入门(一)数据类型

    与其它的编程语言一样,VBA也有它自己的数据类型。讲到数据类型,就离不开“变量”与“常量”这两个概念,变量与常量,都是用于保存数据的。顾名思义,“变量”是会变的,即它的值是可以改变的;而常量,则它的值通常是固定不变的。
    定义数据类型的优点有2个:

    • 便于内存管理
    • 便于程序进行计算(数值型)和其它使用(非数值型)
      VBA中的基本数据类型有多种,但常用到的只有其中一半左右。

    0. 变量与常量的定义

    VBA中用

    Dim 变量名 As 数据类型
    

    的格式来定义基本变量。变量名可以是英文字母、数字、下划线的组合,但必须以字母开头。

    变量的赋值则直接使用一个等号进行:

    Dim i as Integer
    i = 3
    

    定义常量

    格式如下:

    Const 常量名 As 数据类型 = 常量值
    

    如下定义一个整型常量:

    Const h As Integer = 18
    

    1. 字符串 String

    字符串是用于保存文本数据的,字符串内容应放置于双引号内。

    2. 数字类型

    VBA中用于表示数字的数据类型有4种:整型 Integer、长整型 Long、单精度浮点型 Single、双精度浮点型 Double。整型及长整型用于表示整数,单精度与双精度浮点型都用于表示小数。

    整型与长整型的区别在于两者所能表示的数值范围不同:

    • 整型数据能表示的数据范围:-32768 ~ 32767
    • 长整型数据能表示的数据范围:-2147483648 ~ 2147483647

    而单精度浮点数与双精度浮点数除了在数值范围不同之外,两者所能表示的数据精度(即小数点后多少位)也是不同的

    • 单精度浮点型能表示的数据范围

    在表示负数时: -3.402823E38 ~ -1.401298E-45
    在表示正数时: 1.401298E-45 ~ 3.402823E38

    • 双精度浮点型能表示的数据范围

    在表示负数时: -1.79769313486231E308 ~ -4.94065645841247E-324
    在表示正数时: 4.94065645841247E-324 ~ 1.79769313486231E308

    反正一句话,它们可以表示非常大的数据,但要注意的时,单精度浮点型其精度是6,即只能保存小数点后最多6位的数据;双精度浮点型其精度是14,即只能保存小数点后最多14位的数据。如果超出以上长度,则超出部分会被去掉,并且会自动四舍五入。

    如上图,可以看到,作为单精度浮点数的i1在输出时变成了5.123457。

    其实如果试图在给变量赋值时直接写到小数点后15位,VBE是会自动检测到并且直接进行四舍五入只保留14位的。上图i2我本想赋值为5.123456789123456,但写完最后的6之后,它自动消失了并且前面的5变成了6。

    因为在数字的表示范围上长整型大于整型,而双精度浮点型大于单精度浮点型,理论上来说,如果把变量定义为表示范围更大的数据类型可以更好地避免掉数据溢出的问题。但在定义变量时,应当遵守的一个原则就是:够用就好。而不是越大越好。所以通常如果整型和单精度浮点型就足以表示数据的话,应当使用它们而不是长整型和双精度浮点型。

    3. 日期型 Date

    日期型数据不仅可以表示日期,还可以表示时间。可以表示的日期范围是:100年1月1日 ~ 9999年12月31日;可以表示的时间范围是:0:00:00 ~ 23.59.59。

    能被Excel识别到的日期,都可以赋值给日期型变量。因为Excel中有很多很多种日期格式,因此在这里无法一一举例。需要用到的时候,可以多尝试。

    4. 布尔型 Boolean

    布尔型数据用于表示逻辑值:真、假 。其中“真”为True,“假”为False。布尔值数据常用于条件判断语句。

    应当注意的是,当其它数据类型转换为布尔值时,0会转成False,其它值则变成True。当把布尔值转换成其他数据类型时,False会转换为0,True则是-1。

    5. 变体型 Variant

    变体型数据是一种特殊的数据类型,几乎可以用于保存所有其它数据类型的数据。可以简单地理解为:当不知道变量所要表示的数据是什么类型时,就把它定义为Variant(但这种操作应当尽量避免)。

    6. 对象型 Object

    对象型是VBA中另一种特殊的数据类型。有点类似于其它高级编程语言中的“对象”,因为它们都有自己的属性与方法,但也仅限于在这两个方面上类似。

    对象型数据会在下一章单独讲解

    7. 枚举型

    枚举型数据就我目前而言使用得并不多,几乎没有使用过。但它可以在某些特定场合下比较有用,因此在这里也提一下。

    当一个变量只有几种可能的值时,可以定义为枚举类型。枚举就是将变量的值逐一列出,属于该枚举型的变量只能取列举的某一个值。

    枚举型数据定义格式如下:

    Public | Private Enum 变量名
        成员1 [= 常数表达式1]
        成员2 [= 常数表达式2]
        ……
    End Enum
    

    开头的“Public | Private”表示两者取其一的意思,Public和Private用于定义变量的作用域(即变量的有效范围,具体后面再讲)。用中括号[]括起来的部分是可以省略的,如果省略的话,则默认以0表示第一个成员,1表示第2个成员,以此类推。

    最典型的就是用一个枚举型变量来表示星期:

    Public Enum WorkDays
        星期日
        星期一
        星期二
        星期三
        星期四
        星期五
        星期六
    End Enum
    

    它的使用如下:


    本系列教程其它文章

    Excel VBA 入门(零)
    Excel VBA 入门(一)数据类型
    Excel VBA 入门(二)数组和字典
    Excel VBA 入门(三) 流程控制1-条件选择
    Excel VBA 入门(四)流程控制2-循环控制
    Excel VBA 入门(五)Excel对象操作
    Excel VBA 入门(六)过程和函数
    Excel VBA 入门(七)注释、宏按钮及错误处理
    Excel VBA 入门(八)单元格边框
    Excel VBA 入门(九)操作工作薄
    Excel VBA 入门(十)用户窗体开发

  • 相关阅读:
    linux 短信收发
    sama5d3 环境检测 adc测试
    【Codeforces 723C】Polycarp at the Radio 贪心
    【Codeforces 723B】Text Document Analysis 模拟
    【USACO 2.2】Preface Numbering (找规律)
    【Codeforces 722C】Destroying Array (数据结构、set)
    【USACO 2.1】Hamming Codes
    【USACO 2.1】Healthy Holsteins
    【USACO 2.1】Sorting A Three-Valued Sequence
    【USACO 2.1】Ordered Fractions
  • 原文地址:https://www.cnblogs.com/wuzhiblog/p/vba_one.html
Copyright © 2011-2022 走看看