1、走进VBA
11年前,刚工作的我开始接触Excel,我还记得问的同事第一个问题:我写个1,怎么能拉下去的时候变成1、2、3、4、5?
工作过程中,我渐渐发现了Excel的重要,于是决定好好学习下Excel,并在网上查资料,买了一本ExcelHome出版的《2003Excel应用大全》,现在已经是2010版本了:
undefined
好厚的一本书,我是认认真真的看了,碰到不懂的还到ExcelHome网站去看论坛,问问题。
学会了一个又一个的公式,发现在单位好像已经没有人能比我Excel用的好了,自信满满啊。书看的差不多之后,觉得自己好像对Excel已经无所不能了
。
这本书前面几章讲了Excel的基础应用,中间主要讲的是函数,只有后面的章节提到了VBA。印象中应该是讲了些简单的基础知识,有个MsgBox的程序吧,估计就是这个可视化的交互吸引了我。
于是我对VBA产生了强烈的学习愿望,2012年3月,在网上找VBA方面的书籍,选定了《Excel 2003高级VBA编程宝典》:
undefined
但是当时单位用的是2003版本的office,2003版的这本书已经绝版, 我就在淘宝买了复印的,但这影响不了我的学习热情。
我毕竟没有计算机知识的基础,学习过程中,很多地方根本看不懂,但我就那么照着书本码代码。
就这么照着书本码代码,还是经常一个小程序都会有好几个地方出错,我就这么坚持着把书看完了。还记得书里有个小工具的功能,我很有热情的照着敲下来发到公司内网和人分享。
现在回头想想,虽然我没有计算机知识的基础,但是这种照着书本码代码的学习方法正好非常适合我。看完这本书后,我终于对VBA是有了一定的理解,能够独立的写一些代码了。
就这样,我在工作中不断的应用VBA,也觉得自己的水平在不断的提高。
我又有了觉得自己无所不能的感觉了
!!!
可是使用VBA写程序,除了在Excel用的好之外,似乎其他地方就没什么用了。于是我尝试着去学点其他东西,那时候应该是2014年左右吧,VB6.0自然首先进入了我的视线,不过那时候网上已经有很多声音说VB6.0不行了,所以我也没能坚持多久。
那个时间java好像很火,于是我又找了java的视频想学习学习,可是VB那种可视化的编程严重影响了我。当时看的java的视频是用EditPlus写代码、cmd编译的,我完全适应不了,脑子里总在想MsgBox呢?窗体呢?按钮呢?对着个黑乎乎的cmd命令窗口就是编程?所以这个也没能坚持多久就放弃了!
还好,对VBA的应用和学习还没有停止。
2016年6月,我觉得自己VBA水平还可以了,又想利用下班时候赚点外快,在淘宝找帮人代做Excel的店,并加入了其中一家。在淘宝大概坚持了2年左右的时间,大概做了有500来单吧,当然其中有不少是一些简单函数的,估计有个300来个VBA的吧,代码量应该写了有个5万行代码了吧。加上自己在工作中写的代码,到了这个时间,不管有用没用的代码,从量上来说,应该超过了10万行了吧。
不知道从什么时候开始,我逐渐感觉自己写的程序基本是一气呵成(虽然没什么复杂的),而且连错误也很少出现了。这应该就是熟能生巧了,由此我也渐渐觉得自己水平越发精纯了(
其实是不知天高地厚)。
2、走出VBA
在淘宝用Excel VBA卖苦力的这个期间,还尝试去学习了一下C语言,终究还是没能摆脱VB的那种可视化编程,C语言坚持了一段时间后也放弃了。但这次C语言的学习,还是让自己对编程有了一些新的认识。
他山之石可以攻玉,这句话说的是非常有道理的。
虽然其他语言我没能坚持学习下去,但是通过接触其他语言,我也发现了VBA的很多做到“太好”的地方,那就是太照顾没有编程基础的人,很多底层的原理都被掩盖了,入门VBA很容易,但想真正学好,写出逻辑性好,性能又好的程序是不容易的。
发现这个问题后,我就去找数据结构与算法方面的书,专业程序员都是推荐学习《算法导论》,我这个没有计算机基础的人看这本书还是很困难的,后来找到一本《大话数据结构》:
undefined
这本书将那些晦涩难懂的数据结构、算法用一种比较诙谐的语句写出来,比较好理解。看完这本书,虽然里面没有任何VBA方面的东西,但是我觉得对写VBA程序帮助非常的大,至少个人认为自从对数据结构和算法有了一定了解后,写出来的VBA程序与之前相比,有了质的变化。
3、VBA的学习方法
个人觉得,公众号是利用一些碎片时间学习,要想真正好好学习vba,还是建议买书籍全面系统的看。
首先可以去看看,Excel函数、基本操作,这个可以锻炼逻辑思维,函数都是实现好的一些算法。
像公式里的Lookup的二分查找法,其实就是二分查找算法,数组公式与vba里的数组理解上也可以完全一致。
然后再去看看专门讲解VBA的书籍,期间混合着看一些数据结构和算法的东西。
最后,最重要的,那就是一定要有目的的去学习,也就是说学的要用得上,如果工作上根本不用Excel,那么想有足够的动力去学习,个人认为是非常非常的困难的!