资源
环境配置
1.新建excel;
2.启用开发工具
3.新建宏
4.程序编辑
练习
练习1
1.利用Array函数创建一个数组,将A1:C3单元格的数组赋值给这个数组,并进行以下操作:
-
(1)将数组的元素存放到E1:G3单元格;
-
(2)将数据元素转置并存放到A5:C7单元格;
-
(3)将数组第一维(行)第3个元素,第二维(行)第2个元素用消息框显示出来;
-
(4)用消息框显示数组的第一维(行)最大索引号和第二维最小索引号;
-
(5)用消息框显示数组包含的元素个数。
Dim arr() As Variant '声明数组变量
arr = Array() '创建化数组(没填参数创建的是零长度的数组)
arr = Range("A1:C3").Value '用excel数据初始化数组
Range("E1:G3").Value = arr '把数组数据填入excel
Range("A5:C7").Value = Application.Transpose(arr) '转置数组并填入excel
Dim v1_3, v2_2 As String '声明字符串变量v1_3和v2_2,用来保存数组元素值
v1_3 = arr(1, 3) '取出数组中第一行第3个元素值
v2_2 = arr(2, 2) '取出数组中第二行第2个元素值
MsgBox "数组第一维第3个元素:" & v1_3 & Chr(13) & "数组第二维第2个元素:" & v2_2
Dim max_1, min_2 As Integer
max_1 = UBound(arr, 1)
min_2 = LBound(arr, 2)
MsgBox "第一维最大索引号:" & max_1 & Chr(13) & "第二维最小索引号:" & min_2
Dim d_1, d_2, sum As Integer
d_1 = UBound(arr, 1) - LBound(arr, 1) + 1 '行数(一维长度) = 一维最大可用下标 - 一维最小可用下标 + 1
d_2 = UBound(arr, 2) - LBound(arr, 2) + 1 '列数(二维长度) = 二维最大可用下标 - 二维最小可用下标 + 1
sum = d_1 * d_2 '二维数组元素个数 = 行数 * 列数
MsgBox "数组包含的元素个数:" & sum
2.用split函数创建一个函数,并将“我是一名学生”每一个字作为一个数组的元素存放到这个数组中,并进行以下操作:
- (1)将数组元素显示在单元格A9:F9中;
- (2)用消息框显示数组的最大索引号和最小索引号;
Dim fullStr As String
fullStr = "我 是 一 名 学 生"
Dim arr() As String
arr = Split(fullStr, " ") '分割字符串fullStr
Range("A9:F9") = arr '将数组元素显示在单元格
Dim maxIndex, minIndex As Integer
maxIndex = UBound(arr, 1)
minIndex = LBound(arr, 1)
MsgBox "最大索引号:" & maxIndex
MsgBox "最小索引号:" & minIndex
3.声明一个动态数组,然后将下图的值赋值给这个数组。
Dim arr() '声明0长度数组
ReDim arr(2, 3) '重新分配数组维度、大小, 注意事项:https://docs.microsoft.com/zh-cn/office/vba/language/reference/user-interface-help/redim-statement
arr = Range("A1:C2") '数组赋值
Range("E1:G2") = arr '验证
4.创建一个一维数组,数组的元素为1~9,然后用join函数将数组元素以“&”符号分隔,合并成一个字符串,然后用消息框显示出来。
Dim arr(9), I As Integer
For I = 1 To 9 '数组赋值
arr(I) = I
Next I
Dim arrStr As String
arrStr = Join(arr, "&") 'https://docs.microsoft.com/zh-cn/office/vba/language/reference/user-interface-help/join-function
MsgBox arrStr
笔记
自定义类
修改类名
给类添加字段
换行符
Chr(13)
MsgBox "第一行" & Chr(13) & "第二行"
字典操作
Sub Test()
Dim dic As New Dictionary
Add2Dic dic:=dic, key:="1", item:="1-0"
Add2Dic dic, "1", "1-1"
Add2Dic dic, "2", "2-0"
Add2Dic dic, "2", "2-0"
End Sub
Function Add2Dic(dic As Dictionary, key As String, item As String) As Integer
Dim list As New Collection
If dic.Exists(key) = True Then
Debug.Print "已存在key: " + key
Set list = dic(key)
list.Add item
PrintList list:=list
Else
list.Add item
dic.Add key:=key, item:=list
Debug.Print "不存在key: " + key
PrintList list:=list
End If
Add2Dic = 1
End Function
Function PrintDic(dic As Dictionary)
For Each key In dic.Keys
Debug.Print key + ":" + dic(key)
Next key
End Function
Function PrintList(list As Collection) As Integer
Dim item As String
For Num = 1 To list.Count
item = list(Num)
Debug.Print "item:" + item
Next
PrintList = 1
End Function
不存在key: 1
item:1-0
已存在key: 1
item:1-0
item:1-1
不存在key: 2
item:2-0
已存在key: 2
item:2-0
item:2-0