vba 判断数组是否为空_VBA代码解决方案第111讲:VBA数组的深入讲解,如何创建VBA数组及数组大小的判断...

23170840a205ab7f932458267b39c0d5.png

大家好,我们今日继续讲解VBA代码解决方案的第111讲内容:VBA数组的深入讲解,如何创建VBA数组及数组大小的判断

一、如何创建数组:

1、使用Array创建数组。

  看以下代码:

Sub Mynz_sz1()

Dim arr()

arr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) '将1到10十个自然数赋给数组arr

[a1].Resize(1, 10) = arr '将数组的值输入单元格,注意这里没有用转置函数

End Sub

代码窗口

fad6e3143713c20769c6291549258d2f.png

运行:

2acc2d6b1fc871ae53b385006bd503dc.png

 特别注意点1:使用Array创建的数组索引号默认从0开始,当然,如果已经用“OPTION BASE 1”语句指定了的另当别论。

 特别注意点2:如果赋的值是文本,那需要用英文引号引起来,如:

  代码: arr = Array("张一", "徐一", "陈一", "王一")

2、使用Split创建数组

Split的作用是把一个文本,根据指定的分隔符,建立一个数组。感觉就有点像我们EXCEL中的基础操作中的“分列”。不同的是“分列”操作是将一个单元格的文本按指定的分隔符分开,存放在同行的多个单元格里,而Split的作用是将一个文本(也可以是存放在单元格里的)按指定的分隔符分开,存放在一个数组变量里。

arr = Split("张一,徐一,陈一,王一,许一,张二,陈二,张三,徐二,张四", ",")

 特别注意点3:用Split把文本转换成数组,索引号总是从0开始。不管你是否使用了Option Base语句,这点和Array不同。

3、通过Range创建数组

  (1)循环给单元格赋值

  比如想把A1:A100单元格的值给数组arr,则代码为:

Sub Mynz_sz2()

Dim arr(1 To 29)

For i = 1 To 29

arr(i) = Cells(i, 1)

Next

[d1].Resize(29, 1) = Application.WorksheetFunction.Transpose(arr)

End Sub

代码窗口:

41b437afc73c16a99790d4d1b3eab4e9.png

运行:

8e07db6c6fe58fa717ba4a553c8edcbb.png

(2)直接等于单元格区域

  这个很简单,直接数组名等于单元格区域就可以了。比如想把A1:A100单元格的值给数组arr,代码还可以简单写为:

代码:

arr = [a1:a100]

二数组大小的判断:UBount和LBound函数

我们定义数组时,我们可以指定数组的起始索引号不为0,而为1或其他的任意数。比如Dim arr(5 to 6)定义的这个数组起始索引号为5,共有两个元素。

那么,对于一个已经定义了的数组,我们想知道它的最大索引号(上界)和最小索引号(下界)是多少,怎么办呢?别慌,用UBound和LBound两个函数就可以了。

如,要想知道数组arr的上界是多少,则:UBound(arr);要想知道数组arr的下界是多少,则:LBound(arr)。想知道数组有多少个元素,则:UBound(arr)- LBound(arr)+1

如代码:

Sub Mynz_sz3()

Dim arr(10 To 50)

Dim brr(1 To 10, 1 To 100)

MsgBox "第一个一维数组数组的上标是:" & UBound(arr) & Chr(13) _

& "数组的下标是:" & LBound(arr) & Chr(13) _

& "数组的元素个数是:" & UBound(arr) - LBound(arr) + 1 & Chr(13) _

& "第二个两维数组第一维的上界是:" & UBound(brr, 1) & Chr(13) _

& "第二维的上界是:" & UBound(brr, 2)

End Sub

191190738b4854c7f324f169ce14ef44.png

运行后:

904983d7f4d2309fdedebd5ebfe79efa.png

今日内容回向:

1 如何创建数组?

2 数组的大小如何判断

《VBA代码解决方案》终于可以和大家见面了,这些将一些非常实用的VBA内容结集成册,PDF文件,可以从中直接查找到你想要解决问题的思路和方法,可以复制文中的VBA代码直接使用。有需要的朋友微信联络我NZ9668。

47e8e25ba9fdb7009a99566b759754a0.png

1e975d6e562a620f7f53a4f1e3153a73.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值