您当前的位置: 首页 > 
  • 4浏览

    0关注

    157博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Excel VBA学习

牙膏上的小苏打2333 发布时间:2020-11-05 13:36:42 ,浏览量:4

VBA
  • 资源
  • 环境配置
  • 练习
    • 练习1
  • 笔记
    • 自定义类
    • 换行符
    • 字典操作

资源

github工程 VBA 文档

环境配置

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

关注
打赏
1664520285
查看更多评论
立即登录/注册

微信扫码登录

0.0480s