VBA学习之基础语法(二)

数据类型

数据类型 存储空间(字节) 适用范围
Byte 1 0~255
Boolean 2 True或False
Integer 2 -2768~32767
Long 4
Single 4
Double 8 ...
Currency(货币型) 8 ...
Decimal(小数型) 14 ...
Date 8 ...
String 字符串长度 1-65400字符
Object 4 对象变量,引用对象
Variant(变体型) ... ...

数组

同种类型的多个变量的集合

  • 创建数组

    • 声明数组

      除了要指定数组名称及数据类型,还应指定数组的大小

      Public | Dim arrayName(a To b) As typeOfData
      '不同的语句声明的数组作用域不同
      'a和b为数组的起始和终止索引,都为整数,用此方法声明,索引是从a开始
      '存储元素个数为(b-a+1)
      Dim arr2(49) As String
      '索引0开始,49终,共(49-0+1)50个
      

      注:若模块的第一句写上Option Base 1,即使用上述第二种方法声明数组,索引从1开始

    • 数组元素的赋值

      要分别给数组里的每个元素赋值,赋值的方法与给变量赋值相同

    • 多维数组

      • 二维:在一个工作表内,行与列的关系可视为一个二维数组,如行表示一层货架,而每个单元格表示为该层陈列的每个商品;列则表示该货架有多层。

      • 三维:在一个工作簿内,每个单独的工作表(sheet)代表一个货架;该货架有多层(列),每层有多个商品(单元格)

      • ...

      • 声明多维数组

        Dim arrayName(a To b, c To d) As String	
        Dim arrayName(1 To 3, 1 To 4) As String '声明一个3x4的二维数组,索引从1开始
        Dim arrayName(2, 3)	As String '声明一个3x4的二维数组,索引从0开始
        Dim arrayName(1, 2, 3) As String '声明一个2x3x4的三维数组
        ...
        
    • 声明动态数组

      暂时将要声明的数组的元素个数留空,后面再以ReDim语句重新指定数组大小

      '统计A列有多少个非空单元格'
      Sub demo()
          Dim arr() As String
          Dim n As Long
          n = Application.WorksheetFunction.CountA(Range("A:A"))
          ReDim arr(1 To n) As String	'重新定义数组大小
      End Sub
      
    • 其他创建数组方式

      • Array函数

        需要先声明变量,变量类型必须为Variant(不懂为什么...)

        使用Array创建的数组索引默认以0开始,除非开头声明Option Base 1

        Dim arr As Variant	'声明变量
        arr = Array(1,2,3,4,5,6,7)	'赋值,若无参数则返回空数组
        
      • Split函数

        Split将一字符串按照指定的分隔符分隔开,返回一个一维数组,索引从0开始;即使Option Base 1,索引依然从开始

        Public Sub splitTest()
            Dim arr As Variant, str As String
            str = "张三,李四,王五"
            arr = Split(str, ",")
            MsgBox "arr的第二个元素是" & arr(1)
        End Sub
        
      • Range对象

        使用Range将一个单元格区域的值直接存储到数组变量中,返回的数组索引是从1开始

        Public Sub rangeTest()
            Dim arr As Variant
            arr = Range("B2:B5").Value
            ' MsgBox "arr的第三个元素为" & arr(1)
            Range("H2:H5").Value = arr
            MsgBox "有几位:" & UBound(arr) - LBound(arr) + 1 & Chr(13) & "最大索引号是:" & UBound(arr) & Chr(13) & "最小索引号是:" & LBound(arr)
        End Sub
        
posted @ 2020-09-07 15:52  未月之四  阅读(332)  评论(0编辑  收藏  举报