VBA典型实例:368例 下载本文

在Excel中,通过VBA代码可调用其他应用程序的功能。包括创建和打开Word文 档、创建和打开幻灯片、发送和导入Outlook邮件等。另外,使用VBA提供的Shell函数还可打开Windows中的其他程序、打开控制面板对应的选项等。 17.1 控制Office应用程序 460 例326 打开Word文档 460 例327 从Word文档中获取数据 462 例328 生成成绩通知书 464 例329 在Excel中打开PPT 469 例330 在Excel中创建PPT 470 例331 使用SendMail发送邮件 473 例332 用Outlook发送邮件 474 例333 导入Outlook中的邮件 476 例334 保存Outlook中的附件 478 17.2 调用其他程序 479 例335 运行系统自带程序 479

例336 在Excel中打开控制面板 481 第18章 VBE工程实用操作技巧

在第2章中介绍了VBE的使用方法。其实,VBE也包含一个对象模型,通过该对象模型可控制VBA工程的主要元素。本章实例介绍通过VBE对象模型,用VBA代码添加或删除模块、创建用户窗体、生成VBA代码等内容。 18.1 显示工程相关信息 483 例337 显示工程信息 483 例338 列出工程所有组件 485

例339 显示工作簿中VBA的过程名 486 例340 导出VBA过程代码 488 例341 列出工程引用的外部库 489 18.2 动态创建组件 490 例342 重命名组件 490 例343 导出/导入模块代码 492 例344 删除指定子过程代码 494 例345 查找代码 496 例346 增加模块 498 例347 增加类模块 500 例348 控制VBE的子窗口 501 例349 工作表中动态增加按钮 502 例350 创建动态用户窗体 504 第19章 VBA程序调试优化技巧

Excel应用程序的顺利完成,调试的过程是非常重要的。本章实例介绍Excel VBA调试程序的基本方法和VBA程序的优化技巧。 19.1 VBA程序调试技巧 507 例351 设置断点 507 例352 使用本地窗口 508 例353 使用立即窗口 510 例354 单步执行 510 例355 运行选定部分代码 512

例356 调用堆栈 513 例357 使用监视窗口 514 例358 使用条件编译 515 例359 错误处理语句 517 19.2 VBA程序优化技巧 518 例360 使用VBA已有功能 518 例361 避免使用变体 520 例362 使用对象变量 521 例363 使用数组处理单元格 522 例364 检查字符串是否为空 522 例365 优化循环体 523 例366 使用For Each循环 525 例367 关闭屏幕刷新 526 例368 使用内置函数 527

VBA应用程序由一系列的VBA代码组成,这些代码将按照一定的顺序执行。有时程序根据一定的条件只能执行某一部分代码,有时需要重复执行某一段代码。通过程序结构控制代码来完成这些功能,本章介绍这些程序控制流程方面的技巧。

3.1 常用输入/输出语句

结构化程序设计中使用的基本控制结构有3种:顺序结构、选择结构和循环结构。顺序结构就是按照语句的书写顺序从上到下、逐条语句地执行。执行时,编写在前面的代码先执行,编写在后面的代码后执行。这是最普遍的结构形式,也是后面两种结构的基础。

顺序结构不需要使用结构控制语句,本节介绍常用的输入输出语句的技巧。

例017 九九乘法表(Print方法的应用)

1.案例说明

在早期的Basic版本中,程序运行结果主要依靠Print语句输出到终端。在VB中,Print作为窗体的一个方法,用来在窗体中显示信息。但是在VBA中,用户窗体已经不支持Print方法了。

在VBA中,Print方法只能向“立即窗口”中输出程序的运行中间结果,供开发人员调试程序时使用。

本例使用Print方法在立即窗口中输入九九乘法表。

2.关键技术

在VBA中,Print方法只能应用于Debug对象,其语法格式如下: Debug.Print [outputlist]

参数outputlist是要打印的表达式或表达式的列表。如果省略,则打印一个空白行。 — Print首先计算表达式的值,然后输出计算的结果。在outputlist参数中还可以使用分隔符,以格式化输出的数据。格式化分隔符有以下几种: — Spc(n):插入n个空格到输出数据之间; — Tab(n):移动光标到适当位置,n为移动的列数; — 分号:表示前后两个数据项连在一起输出;

— 逗号:以14个字符为一个输出区,每个数据输出到对应的输出区。

3.编写代码

(1)在VBE中,单击菜单“插入/模块”命令插入一个模块。 (2)在模块中输入以下代码: Sub multi() For i = 1 To 9 For j = 1 To i