概述:主要讲解一下VBA的用途和缺点,然后讲解如何搭建一下VBA的开发环境和巧使VBE开发提升编程效率
一、VBA的简史
a) 宏简介:
宏的应为名为macro,是自动执行某种操作的命令集合,它包括两个过程,即Excel4或者成为xlm的宏语言和Excel5中的VBA宏。Excel4中的宏由宏表函数构成,由录入宏表中的函数来控制程序的执行,后来,微软推狂VBA作为宏语言,同时引进VBA编辑器即VBE,用户可以通过录制宏来产生代码,代码储存在VBE环境的代码模块中,利用组合键alt+F8可以返回调用录制的宏。
VBA是一种面向对象的程序语言,所见即所得的方式编写代码。
b) VBA的优缺点
i. 优点:可以录制、所见即所得、调用现成对象、应用广泛、交流方便
ii. 缺点:学习周期长、专业词汇多、普及范围小
c) VBA主要用途
处理大型运算、工作簿/工作表拆分与合并、处理重复性任务、简化内置公式、定制程序界面、开发受保护的专业程序
二、搭建VBA的开发环境
a) 配置Excel的设置
文件—选项—安全选项---信任中心---信任中心设置—
i. 宏设置
启动所有宏,信任对VBA工程对象模型的访问
ii. 受信任的位置
添加新位置,上方选择需要信任的文件夹目录,下方打对勾表示子目录也信任。
b) 如何加载宏文件
关闭信任中心设置。点击加载宏,下方管理选择excel加载项 点击转到,浏览…找到刚才放在你信任文件夹中的宏xla格式的就可以了。然后就可以把宏加载到excel中。
c) 开始使用VBE开发环境,还有查询工具
打开VBE编辑器:Alt+F11
点击F1弹出帮助界面,它与excel的帮助不一样,你在文本框中输入names回车就可以看到想过。等于你需要查那些对象和方法就可以利用帮助去查询。这是本地查询。右下角会显示脱机二字
当输入好代码的时候 F5是执行 终于可以开发了。眼泪啊。
d) 编译错误
VBE提供很好的错误提示功能
i. 标识符错误 sub 11() 11就为错误
ii. 语法缺少错误 IF THEN /GOTO 是组合使用 直接输入 IF [a1]=10 就会报错
iii. 无效字符 Range函数中只能用半角双引号 ‘’ 输入Range(“a1”)=10
iv. 列表分隔符 Mid([a1])=10会报出列表分隔符错误。 Mid函数需要指定参数
v. 运行时出错
简单一例,没时间了。
Sub 计算A列数字个数()
Dim i AsByte
i =WorksheetFunction.Count(Range("A:A"))
MsgBox"A列数字额数为:" & i
End Sub
如果A列有1000个数字,则会报错,因为byte类型,它只能表示0-255.
三、巧设VBA编辑器提升编程效率
首先在2010版中文件—选项,自定义功能区 将开发工具打对勾。可以在主页面看到工具栏中的开发工具了 alt+F11和在工作簿中右键查看代码都可进入VBE
VBA共分为三块. Excel对象、窗体、模块
a) 代码窗口
代码窗口是用于存放VBA代码的处所,它是最核心的组件,代码窗口包括工作表、工作薄、窗体、模块、类模块代码窗口
b) 对象与过程窗口
对象与过程窗口是指位于代码窗口上方的对象列表和过程窗口的列表
c) 立即窗口
立即窗口有两个功能,显示雕饰代码时产生的结果,貌似跟eclipse中的console差不多,以及执行单句的代码,默认隐藏,可以使用Ctrl+G调出
d) 工具箱
非常重要的工具,默认状态包括15种工具,用户可以利用这些工具设置出和其他任何软件类似的界面,如果不够用,可以邮件自定义新的工具。
调用工具方式与调用前台的任何组件的方式都不同,建立在UserForm基础上的。
貌似确真不强大。
e) VBE中不同代码窗口的作用
i. 工作表代码窗口
工作表代码窗口用于存放工作表事件代码,该代码仅仅在当前表中调用。普通sub过程保存在工作表时间代码中,虽然也可以执行,而且其他模块或者工作表可以调用,但诸多不便,建议:工作表时间代码存放工作表代码窗口。Function过程和sub过程保存在模块中 ctrl+R调出工程资源管理器。双击工作表就出现窗口和代码
ii. 工作簿代码窗口
工作簿代码窗口名字为ThisWorkbook,该窗口用于存放工作薄级别的时间代码。虽然它也可以存放function过程和普通的sub过程,但方便的话,该窗口仅仅存放工作簿事件相关代码
iii. 窗体代码窗口
窗体代码窗口用于存放窗体、控件相关的代码,它的代码只能在窗体中是使用,其他任何窗口都无法执行
iv. 模块代码
工作中使用最多的就是模块代码窗口。在模块代码窗口中存放sub过程和function过程。这些过程可以在当前模块执行,也可以供其他窗口调用。工作表事件、工作簿事件、窗体事件和类模块都可以使用模块的程序。而模块与模块之间可以互相调用
v. 类模块
类模块是用户自定义类的属性和方法的模块,单机插入—类模块即可创建一个类模块。
类模块的代码通常用于应用程序级别的事件,在应用程序对应的事件中调用该代码
vi. 其他都是一些智能提示和显示提示效果的设置,不多说了。加.可以智能提示方法和属性,还有就是可以显示方法参数。