2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 你的VBA代码中自己的风格吗?依照自己的书写习惯 写出具有自己风格的VBA代码

你的VBA代码中自己的风格吗?依照自己的书写习惯 写出具有自己风格的VBA代码

时间:2019-03-29 19:19:08

相关推荐

你的VBA代码中自己的风格吗?依照自己的书写习惯 写出具有自己风格的VBA代码

在各个平台上和大家分享VBA代码已经很久了,我们知道,VBA是Visual Basic for Applications的简称,是一种寄生语言,是微软开发出来在其桌面应用程序中,可以执行自动化任务的编程语言。它主要用来扩展Windows的应用程序功能,特别是Microsoft Office软件。是一种应用程序视觉化的语言。

我们在谈到语言的时候,比如汉语,是一种语言,英语,是一种语言,日语,是一种语言,这些语言的应用,一方面有它自己的词汇量,再有就是它的语法,还有就是应用习惯了。当我们的词汇量到一定基础的时候,应用习惯的重要程度甚至要优于语法。比如我们在日常生活中,用于交谈的语言很多时候就是习惯的表达。这种表达甚至只是适合于特定的人群。

VBA既然是一种语言,在某种程度上也是符合着这种规律的。每个人都有着自己的写代码风格,就好比我们上学时的作文,每个人的文章都是不同的,有细心的人甚至可以根据文章能判断出是谁写的,朱自清的文章和鲁迅的就截然不同。

我们的VBA代码也是一样,在我的每一讲中虽然尽可能去掉我平时写代码的一些习惯,但很多的时候却还是能带出来,比如变量的命名,循环结构的利用,字典的利用,数据库的绑定,各种写法都是我多年在实际利用过程中积累的适合我的写法,利用起来得心应手,顺手拈来,如果再用其他的写法还要去考虑语法结构是否合理。

这也就是我常说的读代码比写代码要难,很多朋友给我发来微信问:看看代码哪里不对啊?真的是很棘手,说句实话:还不如我给您写段代码呢。

下面就字典的内容给大家举个实例,说明方法多多,可以任选一习惯策略,为了更好的说明问题我们先给字典赋值:

创建字典:Set mydic = CreateObject("Scripting.Dictionary")

给字典赋值:

myarr = Range("a1:d" & Range("a1").End(xlDown).Row)

For I = 1 To UBound(myarr)

If Not mydic.exists(myarr(I, 1)) Then mydic(myarr(I, 1)) = Array(myarr(I, 2), myarr(I, 3), myarr(I, 4))

Next

在上面的几行语句中就有若干种写法:我点出来,大家了解一下:

字典可以前期绑定方法。

End(xlDown).Row 可以把xlDown用数字代替

3 Range("a1:d" & Range("a1").End(xlDown).Row) 也可以用最后的单元向上返回到不为空的单元格

上面是把数组赋值给字典的键值,键值标准的名词是item.我习惯称之为键值。那么从字典中提出数据呢?比如提出字典中最后的值,有什么方法呢?

策略一: Range("f1").Resize(1, 3) = Application.Index(mydic.items, mydic.Count) 利用了数组函数 Index,分隔数组,返回最后的列。

策略二:Range("f1").Resize(1, 3) = mydic.items(mydic.Count) 利用一维数组的最后的值

策略三:t = mydic.items

Range("f1").Resize(1, 3) = t(mydic.Count -1) 利用数组赋值给变体变量

策略四:For Each u In mydic.keys

If I = mydic.Count Then Range("f1").Resize(1, 3) = mydic(u)

Next

利用了字典中最后数的值提取。

上面的方法是否列举完了呢?大家可以再考虑一下。总之方案多多,我们到底用哪种策略呢?我告诉大家:这里没有最好的方案,主要符合自己的习惯即可。自己习惯的就是最好的。VBA是我们小型数据化的过程,这个过程中,我们可以不必过多的在意程序运行的时间。只要自己用的方便,顺手就可以。

文如其人,代码也是一样的,无论用什么习惯,要有一定的规则,建议大家不要过多的更改自己的习惯,这样在经年后阅读代码可以更方便。有时候我也会看我前写的代码,有时也会觉得某个程序实现逻辑有更好的方法,但我不想修改,因为那个代码我一看思路和变量的命名就知道是我自己的作品,不要再改了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。