数据类型
数据类型 | 存储空间(字节) | 适用范围 |
---|---|---|
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
-
-