经过上次文章介绍
郑天玑:如何学习Excel VBA?zhuanlan.zhihu.com本文将开启我们正式的Excel VBA之旅,本文的终点将放在VBA语言本身,我们将编写一个最基本的List链表数据结构类型,带大家学习一边VBA语言的基本特性。
1 何谓链表List
大致图示如下:
![25caa0ad30209c9b6ac8f27913b6337f.png](https://i-blog.csdnimg.cn/blog_migrate/a2a949c5d78032c433354ca70f7cc5e7.jpeg)
- 1 List有点类似数组,可以将一个个数据串联在一起,进行顺序访问,每个数据被包裹在一个名为node的对象中,node也成了List的基本组成单元。
- 2 node对象由两个基本元素组成,一个是data,用来存放数据,另一个是nextnode指针用来存放下一个node的地址,这样一来我们获取List中的第一个node之后就可以顺藤摸瓜式地按顺序访问挂载在整条List中的所有node中的数据。(链表最后一个node,它的nextnode=nothing)
- 3 List链表本身包含一个head指针指向链表头,一个tail指针指向链表尾,一个isize变量记录链表的长度
程序要实现的功能如下:
Sub test()
Dim mList As New MSList '定义并创建一个链表对象
'调用链表对象的Append函数往里面添加数据,这个数据会由一个node对象包裹
'我们这里会往list中添加整型、浮点型、字符串、日期四种不同类型的数据类型
mList.Append (3)
mList.Append (9999.77)
mList.Append ("租鸡青一")
mList.Append (#1/1/2020#)
mList.PrintList '将整个链表中的数据打印出来
End Sub
输出结果如下:
![8640a88b66d56c8c1fd952fd4df55e8a.png](https://i-blog.csdnimg.cn/blog_migrate/64c77610764258d388bcfaf161c4c416.png)
2 从零开始的List编写生活
明确了我们的目标,就可以从0开始构建我们的程序了,万里执行始于足下,首先我们新建一张Excel表格,取个名字,然后双击打开,点击到:开发工具-Visual Basic,我们就会进入开发页面
![4c394555074326f1ceea30e02c4e269f.png](https://i-blog.csdnimg.cn/blog_migrate/60dfb35160586b05655fa52018960647.png)
(PS:如果你打开Excel后发现没有开发工具选项卡:请点击文件-选项-自定义功能区-在主选项卡页上,勾选开发工具选项卡
![38a5fe1a1652aa0fdd01bafbc302dc94.png](https://i-blog.csdnimg.cn/blog_migrate/15d244d6ad011af9d59fbecb2164d490.jpeg)
然后在信任中心启用宏:
![2a41256383300afad7baf97e315477fe.png](https://i-blog.csdnimg.cn/blog_migrate/2d13c8ba205fd36aeb05dae39a29c13e.jpeg)
)
然后我们在右侧的工程栏目中,右键我们的自己的工程,选择插入一个类模块和一个模块:
我们会在类模块里面封装Node和List的基本功能,然后在模块中使用它们
![bd3fb9db633ac3d22461c2b22c5f90e6.png](https://i-blog.csdnimg.cn/blog_migrate/34706c3bc7997594a396ff0d59c20324.jpeg)
大致是这个样子:
![ac6b15fb790e2a83d275e72cf82d4450.png](https://i-blog.csdnimg.cn/blog_migrate/d896f01b431b766811c674258e0f65a6.jpeg)
然后我们要把MSList和Node两个类模块的可见性改为:2-PublicNotCreatable
,以便我们未来给其他程序调用
![64733445505ba1e2e347e95557d2e5f4.png](https://i-blog.csdnimg.cn/blog_migrate/8adb8959a55d4ed4ef88a83aadafe747.png)
ok,万事俱备,但我们不先急于编写Node和List,我们先打开modTtest,创建一个sub test()的过程函数,来编写我们的第一条代码(以后我们的程序会在这个过程函数中运行)
' 英文符号'开头代表此行为注释,在VBA代码编辑器中显示绿色