没有合适的资源?快使用搜索试试~ 我知道了~
首页程序员视角:Excel VBA深度开发指南
程序员视角:Excel VBA深度开发指南
需积分: 10 1 下载量 113 浏览量
更新于2024-07-20
收藏 3.69MB PDF 举报
"《Excel与VBA程序设计(mini)》是由马维峰编著的一本针对Excel和VBA编程的教程。作者自述从98年开始接触VB,对Office特别是VBA的认识经历了由浅入深的过程。书中聚焦于解决在Excel数据处理和VBA开发中实际遇到的问题,如高效获取和赋值单元格值、Excel文件操作、程序部署、图表制作等,这些问题在很多教材中往往缺乏深入讲解。 作为一本实践导向的书籍,作者以其程序员的视角,深入探讨了VBA开发中的各种设计、效率和编程风格问题,提供了基于个人经验的实用建议。书中特别强调,关于运行效率的部分是经过作者亲自测试的,并且书中代码和文字紧密结合,代码是理解和掌握概念的关键。由于篇幅限制,有些内容未能详尽展开,作者提到写作过程中既有对深度的追求,也有对清晰表达的挑战。 该书并非全面介绍Excel和VBA的百科全书,而是侧重于实用性,旨在帮助读者从实际应用的角度理解和使用这两种工具。它不追求全面性,而是根据作者的经验精心挑选和组织内容,以解决开发者在日常工作中可能遇到的具体问题。对于希望提升Excel VBA技能,尤其是解决实际工作场景中的问题的读者,这是一本值得参考的实用指南。"
资源详情
资源推荐
2. VBA 简介 8
Excel 与 VBA 程序设计 Copyright © 2005 马维峰
窗口的右键菜单下,有添加用户窗体、模块、类模块的选项,也可以将已有的模块移除、
导入和导出。在工程资源管理器之下,也可以通过将一个工程中的模块用鼠标拖拽到另一
个工程实现模块在工程之间的拷贝。
图
2-2 VBA 工程资源管理器窗口
建议随时更改 Excel VBA 工程的名称,其缺省名称为“VBAProject”,可以通过选中
工程,在属性窗口更改为有意义的名称,或者在菜单的“工具 - VBAProject 属性”
对话框中更改。
在 VBA 工程资源管理器之下是属性窗口(图 2-3),主要用于对象属性的交互式设计
和定义,例如选中图 2-2 中的 VBAProject,在属性窗口即可更改其名称。属性窗口除了更
改工程、各对象、模块的基本属性外,主要用途是用户窗体(自定义对话框)的交互式设
计。图 2-3 显示的就是一个打开的窗体(UserForm)的属性窗口。
2. VBA 简介 9
Excel 与 VBA 程序设计 Copyright © 2005 马维峰
图
2-3 VBA 属性窗口
在 IDE 窗口的右侧,可以打开代码窗口。在资源管理器窗口中的每一个对象会对应一
个代码窗口(用户窗体包括一个设计窗口和一个代码窗口)。可以通过在对象上双击、在右
键菜单或资源管理器工具栏上选择查看代码(或对象)打开代码窗口。
对于 IDE 环境、菜单、工具栏的具体使用和说明,在后面的讲解中会逐步讲解说明。
单击“视图 - 对象浏览器”或工具栏上的“对象浏览器”按钮即可打开对象浏览
器窗口(图 2-4),在此窗口内可查看当前工程及其引用对象的属性、方法和事件。对象浏
览器对于熟悉和查看相应的 Excel 对象、引用对象(包括 COM 对象、其他 Excel 程序)
所包含的类、属性、方法和事件非常有用,特别是在没有相应的帮助资料或者文档的情况
下,对象浏览器是查看一个对象的内容的最有效的工具。
2. VBA 简介 10
Excel 与 VBA 程序设计 Copyright © 2005 马维峰
图 2-4 VBA IDE 环境的对象浏览器
2.1.2. 在 VBA IDE 下进行开发
熟悉了 VBA 的 IDE 环境后,我们来开发 VBA 之旅的第一个程序。新建一个 Excel
文件,通过菜单或键盘快捷键打开 VBA 集成开发环境,在 VBAProject 上单击右键,选择
“插入 - 模块”。这样,系统将打开一个代码窗口,在窗口中输入以下代码
4
。
#001 Sub MyFirstVBAProgram()
#002 Dim strName As String
#003 Dim strHello As String
#004 strName = InputBox("请输入你的名字:")
#005 strHello = "你好," & strName & "!"
#006 MsgBox strHello
#007 End Sub
4
代码内的“#003”为行号,在实际代码中不能输入,在此只为文中叙述方便,之后不再重复。
2. VBA 简介 11
Excel 与 VBA 程序设计 Copyright © 2005 马维峰
将鼠标光标放置在这段代码之内,单击菜单“运行 - 运行子过程/用户窗体”,或
者在工具栏单击运行按钮,则可运行这段代码。运行结果会显示一个对话框,输入一些内
容后,会显示相应的问候语。同样,这段代码可以和宏一样,在 Excel 下选择并执行。
与其他程序设计语言不同,VBA 程序是事件驱动的,没有 Main 函数之类的入口的概
念。如果在 IDE 环境下,鼠标光标不在任何过程内,单击工具栏或运行菜单的运行,会
显示一个对话框,要你选择要运行的过程。
本质上,VBA 代码应该只是一些完成具体工作的集合,而通过界面元素或者 Excel 的事
件驱动执行,你可以通过自定义按钮、菜单,并指定一个宏(VBA 过程,自定义界面也
可以通过编程手段完成此类工作),通过单击此按钮即可调用相应的 VBA 代码,或者将
调用绑定在 Excel 的某个事件下。
下面我们简单看一下这段代码的组成,代码第 1 行表示这是一个新的过程,名称为
“MyFirstVBAProgram”,第 2、3 行定义了 2 个变量,其类型为字符串类型,第 4 行调
用 InputBox 这个内置函数,并将返回值赋给 strName 这个变量,第 5 行将几个字符串组
合成
一个新的字符串,第 6 行调用 MsgBox 这个函数,显示一个对话框,第 7 行表示过程结
束。
VBA 程序由不同的模块组成,在模块内部,可以定义不同的变量、过程或函数,由此组成
一个完整的程序。
代码窗口的设置
中文环境下 VBA IDE 代码窗口缺省的设置比较糟糕,字体为宋体,大小是 9 磅,使
用不很方便,可以在“工具 - 选项”对话框下的“编辑器格式”页内设置代码窗口
字体、颜色、背景。
在此模块内,再新建一段代码:
#001 Function MyAdd(varA, varB) As Variant
#002 MyAdd = varA + varB
#003 End Function
此段代码非常简单,只有 3 行,第 1 行表示这是一个函数,具有 2 个参数 varA,和
varB,
2. VBA 简介 12
Excel 与 VBA 程序设计 Copyright © 2005 马维峰
函数与过程的差别在于函数有返回值,第 2 行将参数 varA,和 varB 的和赋给函数,代表其
返回值。函数无法直接运行,必须从工作表或者其他程序调用,例如,我们可以写以下一
段简单的程序调用此函数:
#001 Sub TestAdd()
#002 Dim a, b, c
#003 a = 12
#004 b = 34
#005 c = MyAdd(a, b)
#006 MsgBox c
#007 End Sub
其中第 5 行为函数 MyAdd 的调用,函数将返回值赋给 c。需要说明的是,VBA 中,
调用过程可以使用 Call 语句,也可省略,调用过程时,其参数的括号可以省略,但调用
函数必须有括号。
也可以直接在工作表内使用自定义的函数,例如在工作表中,我们可以和 Excel 内置
函数一样使用自定义的函数(图 2-5), Excel 会负责参数传递,将返回值赋给相应的单元
格,在引用参数改变时会自动重新计算,总之,与内置函数的使用没有什么不同。
图 2-5 在工作表中使用自定义函数
以上通过 2 个 例子简单介绍了 VBA 编程的过程和概念,后面我们将正式进入 VBA
编程之旅,逐步讲解模块、函数与过程、基本语法、数据类型、类模块与面向对象编程等
概念。
2.1.3. 善用工具及其他
VBA 集成开发环境,提供了很多便利的工具可以帮助或辅助我们写出好的程序,其中
的方便必须亲自使用才可以体会,因此,一定要善用工具
5
。
VBA 的代码编辑器提供了几项非常有用的功能,如代码大小写自动切换,代码自动格
式化,即时代码提示。代码自动大小写切换可以帮助我们发现拼写错误,如果我们所有的
5
不仅是 VBA 开发,所有的程序开发工作中都应该善用工具。:)
剩余159页未读,继续阅读
qq_26504247
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 多模态联合稀疏表示在视频目标跟踪中的应用
- Kubernetes资源管控与Gardener开源软件实践解析
- MPI集群监控与负载平衡策略
- 自动化PHP安全漏洞检测:静态代码分析与数据流方法
- 青苔数据CEO程永:技术生态与阿里云开放创新
- 制造业转型: HyperX引领企业上云策略
- 赵维五分享:航空工业电子采购上云实战与运维策略
- 单片机控制的LED点阵显示屏设计及其实现
- 驻云科技李俊涛:AI驱动的云上服务新趋势与挑战
- 6LoWPAN物联网边界路由器:设计与实现
- 猩便利工程师仲小玉:Terraform云资源管理最佳实践与团队协作
- 类差分度改进的互信息特征选择提升文本分类性能
- VERITAS与阿里云合作的混合云转型与数据保护方案
- 云制造中的生产线仿真模型设计与虚拟化研究
- 汪洋在PostgresChina2018分享:高可用 PostgreSQL 工具与架构设计
- 2018 PostgresChina大会:阿里云时空引擎Ganos在PostgreSQL中的创新应用与多模型存储
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功