前景提要
数组的一些基础知识,我们也是上面也是陆续分享了6节了。相信大家对已数组应该已经有了一个大致的了解了
场景模拟

这是我们今天的模拟数据,我们只是构造了一列非常简单的数据,刚好可以方便的装到一个数组中,然后我们要实现的场景是:
那个位置
可能大家会问,日常工作中哪些场景会用到这个功能呢?
如果判断当前列表中是否存在某个元素,我直接用Excel自带的查找功能就可以找到了,为什么还需要用到数组功能呢?
其实我们学习VBA要脱离Excel现有的框架,进入代码的世界中,比方说我们在之前学习过的工作表的合并的时候,合并工作表的时候,字段顺序不同的时候,要如何合并所有的字段?那个时候我们就用了这个数组的查找功能,所以学习一些数组的这些基本的功能,才能完成一些更加高难度的功能。
代码区
Sub test()
Dim arr
arr = Range(Cells(1, 1), Cells(26, 1))
nums = Application.Match("AQQ10", arr, 0)
If Err.Number<> 0 Then
MsgBox nums
Else
MsgBox "不存在“"
End If
End Sub
这一段代码也是非常的简单,我们的目的是测试下元素是否在列表中,如果 存在的话,就直接弹窗提示元素在数组中的位置,如果不存在的话,就直接返回不存在,我们来看看最终的效果

从结果来看,数据是正确的的,AQQ10确实是在列表的第10个位置,所以返回的结果也正好是第10,结果没有错误

最终的结果是不存在,而实际上,列表中确实也是不存在这样的结果,证明结果是正确的
代码解析
我们之前学习过,在数组中也是可以使用函数的,数组和函数的搭配组合,可以解决不少的问题
在今天的代码中,如果你仔细观察代码,并且对于函数也有一定的了解的话,你就会发现,在今天的代码中也有个函数存在,他就是我们常用的Match函数,他能够帮助我们在数组中定位元素的位置,并且返回最终的数字。
其实和本身函数的使用方法是一样的,这里可能会有小伙伴说,之前我们学习函数的时候,不是说在VBA使用函数是worksheetfunction+函数的方法嘛?为什么今天的代码中使用的application呢?其实这两种方法都是正确的,不过有时候使用worksheetfunction会报错,这个时候你直接替换成为application就可以了。
这里我们看到这里使用了一个新的概念
它字面的意思就是返回的结果是是一个错值,如果最终返回的是一个正确的结果的话,那么这个肯定不会有报错的,反之如果是一个错值,也就是数组中不存在这么一个元素,那么nums这个变量肯定是不存在的,我们来实际操作看看,

可以看到,实际的结果nums并不是一个正常的数值,而是一个报错,所以
他捕捉的就是这个报错,一旦出现了这个报错,那么就证明数字中不存在这个结果,那么直接返回不存在就可以了,这就是我们今天代码的逻辑,那么你Get了吗?
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
- 控制面板
- 网站分类
- 搜索
- 最新留言
-
- 文章归档
- 友情链接
Powered By Z-BlogPHP 1.7.3
ICP证:湘ICP备2021010693号-4