VBA的很多部分,特别是数组和字典,还是很容易接受的。VBA数组,我是和函数数组相互印证学习的,感觉比函数数组简单。字典,对我来说,就是高级版的VLOOKUP,所以学习起来没有太多困难。而学会了字典,等于完全掌握了一个对象的学习过程,再学其它的,变得容易很多。。所以可能学习VBA就是要有一个敲门砖,这个砖找对了,门一下子敲开了,路就好走很多。希望你能找到自己的砖。
只会不是很难的函数。其他的都不懂。听说VBA是学不完的,所以想学到一般的程度。以下几点送给你初学的你
1:调试
经常看到新手学习了很长时间的VBA之后仍然不会使用调试功能, 一遇到问题马上就请教他人, 这样不利于自身的成长。调试非常重要, 是学习代码本身
不可或却的一部分。是诊断, 梳理代码逻辑的过程, 可以避免逻辑错误的重复性发生。善用调试新手很多的问题都可以得到解决, 即可摆脱对他人的依赖性,
自身又得到长足的进步, 一举两得。
三个窗口, 三个功能键:
地方窗口, 立即窗口, 观察窗口, F1(帮助), F2(属性方法), F8(分步执行)
途中诊断:
断点, stop 等等。
2: 分拆
(1)语句分拆
长而难懂的句子分拆成基本单元, 利用调试功能一个个解决, 很容易就理解了它的含义。
如: intRow = Range("A"& Rows.Count).end(xlup).row
立即窗口:?Rows.Count
Range("A" &Rows.Count).Select
Range("A"&Rows.Count).End(xlup).Select
?Range("A"& Rows.Count).End(xlup).row
用眼睛都可以看到每一步Excel选中的哪个单元格, 那么自然就不难理解了。这个小范例同时揭示了学习程序过程中一个非常重要的方面: 动手尝试。
(2)子程序分拆
把一个冗长的程序按照功能拆分成一个个相对独立的子程序来调用, 使得程序具有一定程度的组织性,结构性,规整性大大提高了代码的可维护性,扩展性,
重用性。这是贯穿程序语言发展的一条主线, 因为它直接指向了程序开发的终极目的之一:开发效率。
3: 耐心
学习目的明确 ≠ 急于求成。无论学习目的如何直接和明确, 学习的过程仍然不是一蹴而就的, "捷径"只能是建立在扎实的阶梯式基础上。
有些新手基本代码还没写利落就开始用界面写"系统", 甚至还没学会调试, 结果是步履维艰, 一步一问, 三步一错, 无以为继。还有的朋友
学习VBA是为了研究彩票, 还没学习一星期就开始写各种计算方法, 自然处处遇"难", 大挫学习兴趣, 随之放弃。抱着明确的目的学习是好事,
不管目的是否"明智"(这是另外一个话题), 但明确的目的不等于"急功近利"。学习的进程总是遵循渐进式的规律, 跳跃式的一夜暴富只能是空中楼阁,
VBA的优缺点是和其设计定位紧密联系的, 是相对于其它对比对象而存在的。抛开定位在其适用范围之外与其它开发语言比较来谈VBA的"缺点", 这种比较本身就是有失偏颇的, 因为它就不是为了开发而设计的,所以也就无所谓什么"缺点"了。
同样, 基于设计出发点的用途和功能也就不能称之为"优点"了,本身就是干这个用的,又何来优点?但这些的确可以作为VBA的特点。听起来比较混淆,就用2个单词作为标记更容易区分些: Advantage, Feature。其实称谓不重要,也没必要较真分的那么清。重要的是和定位联系起来看待VBA的存在及其特点。
1:作为程序语言和其他开发语言比较,VBA的特点:
(1)"天然"强大的输入输出平台
对着"大黑框框"学程序一学就是几年,太没成就感了,什么样的控件能有Excel强大呀。
(2)使用便捷
无需搭建任何环境, IDE,调试器(debugger)齐全;
Office装机量大,VBA到哪儿基本都可以拿出来用,就像哪部电脑都有浏览器一样,JavaScript随时可以用;
无需保存,编译,即可运行;代码数据一体化(同时也是"缺点"),发布简单,无需运行环境。
与其它自动化操纵Office的方式相比, 与COM交互更加容易便捷。
(3)简单易懂,门槛低,学习周期短
为了完整性,还是罗列出一些所谓的"缺点"
2:VBA的"缺点"
(1)不好封装
(2)需要宿主解释器的解析,所以速度慢
(3)安全性差
(4)无法提供面向对象的结构式编程方式
(5)单线程
(6)................................
概括起来基本上涉及底层,大型应用的方面根本做不到,较为复杂点的应用系统在与数据库结合后并非不能做到,但仍不适合。
上述"缺点"基本上是脚本语言具有普遍性的"通病", 显然VBA就不是针对完成上述功能而设计的。但相对于寄生于Office的脚本来言,
VBA是唯一的存在(VSTO不是这样的方式),独此一份没有可以比较的对象,所以优点就无从谈起。