Excel-VBA-数组-05-数组清空

微信公众号原文

系统:Windows 7
软件:Excel 2016

  • 本系列讲讲数组功能
  • 今天说说如何清空数组的内容

Part 1:实现内容

  1. 有数组arr1,内容为Array(1, 2, 3, 4),增加一个元素成为arr2,如下图
  2. 有数组arr3,内容为[{1,3,5,7,9}],清空成为arr4

arr1

1.png

arr2

2.png

arr3

3.png

arr4

4.png

Part 2: 代码

Sub main()
    Dim arr1()
    arr1 = Array(1, 2, 3, 4)
    ele = 5
    temp = arr1
    arr2 = arrAppend(temp, ele)
    
    arr3 = [{1,3,5,7,9}]
    temp = arr3
    arr4 = arrClear(temp)
    
    UCount = UBound(arr4)
    LCount = LBound(arr4)
    
    If IsEmpty(arr4(0)) Then
        Debug.Print ("空")
    End If
End Sub

Function arrAppend(arr, ele)
    UCount1 = UBound(arr)
    LCount1 = LBound(arr)

    ' 增加元素
    ' 先扩大数组范围,再赋值新元素
    ReDim Preserve arr(LCount1 To UCount1 + 1)
    arr(UCount1 + 1) = ele
    
    arrAppend = arr
End Function

Function arrClear(arr)
    ReDim arr(0)
    arrClear = arr
End Function

代码截图

Excel-VBA-数组-05-数组清空_第1张图片
5.png

运行过程数据

Excel-VBA-数组-05-数组清空_第2张图片
6.png

Part 3: 部分代码解读

  1. temp = arr1在传入函数前对使用temp变量进行赋值,因为函数内部对变量的更改会随着函数运行结束而返回到调用该函数的过程,也就是会改变其初始值,这不是我想要的,所以使用一个临时变量,关于该方面可见之前写过的文章
  2. 在数组末尾增加元素和上一节方法相同,只是封装在一个函数中
  3. ReDim arr(0)清空元素,采用Redim重新定义即可,与上一文的区别是:无Preserve。注意采用这种方式,含有的唯一元素取值为空。如果此时向其增加元素,会在空值元素后面增加,而不是顶替空元素

增加元素

7.png

对应代码

Sub main()
    Dim arr1()
    arr1 = Array(1, 2, 3, 4)
    ele = 5
    temp = arr1
    arr2 = arrAppend(temp, ele)
    
    arr3 = [{1,3,5,7,9}]
    temp = arr3
    arr4 = arrClear(temp)
    
    UCount = UBound(arr4)
    LCount = LBound(arr4)
    
    If IsEmpty(arr4(0)) Then
        Debug.Print ("空")
    End If
    
    ele = 5
    temp = arr4
    arr5 = arrAppend(temp, ele)
End Sub

  • 更多学习交流,可加小编微信号learningBin

更多精彩,请关注微信公众号
扫描二维码,关注本公众号

公众号底部二维码.jpg

你可能感兴趣的:(Excel-VBA-数组-05-数组清空)