收藏 分销(赏)

VBA应用案例教程——第一章.doc

上传人:xrp****65 文档编号:6768378 上传时间:2024-12-21 格式:DOC 页数:29 大小:84KB 下载积分:10 金币
下载 相关 举报
VBA应用案例教程——第一章.doc_第1页
第1页 / 共29页
VBA应用案例教程——第一章.doc_第2页
第2页 / 共29页


点击查看更多>>
资源描述
第1章 VBA基础知识 1.1 VBA及其特点 一、什么是VBA ? VBA(Visual Basic for Applications)是Microsoft Office 系列的内置编程语言,即应用程序中的VB(Visual Basic)。 它“寄生于”Office应用程序,是Office 套装软件的一个重要组件。 它面向对象(OOP),可视化,容易入门,可以实现日常工作的自动化。 二、VBA编程优点 1.程序只起辅助作用,大部分功能用Office的,因此简化了程序设计。打印、文件处理、格式化和文本编辑等功能不必另行设计。 2.通过宏录制,可以部分地实现程序设计的自动化,大大提高软件开发效率。 3.发行方便,只要发行含有VBA代码的文档或模板即可,属于绿色软件。Office界面熟悉,便于软件推广应用。 4. Office界面对于广大计算机应用人员来说比较熟悉,符合一般操作人员的使用习惯,便于软件推广应用。 5.用VBA编程非常简单,即使非计算机专业人员,也可以很快编出自己的软件。 三、VBA应用前景 Bill Gates说过:VBA已经不再是单纯的技术了,它正快速地朝着一个标准化的程序开发平台的目标前进,就好像现在的Windows、Internet的角色一样。 VBA是即将兴起的、很有前途的编程语言,在Office环境下用VBA开发应用软件,将成为软件开发人员和计算机应用人员首选方式。 目前在众多的Office应用人员当中,80%以上的人,仅仅在使用这些软件20%左右的基本功能,真正精彩的部分——VBA编程,没有被开发和使用。 四、VBA和VB的主要区别   1. VB用于创建标准的应用程序,VBA是使已有的应用程序(Office)自动化。   2. VB具有自己的开发环境,VBA寄生于已有的应用程序(Office)。   3. VB开发出的应用程序可以是可执行文件(*.EXE),VBA开发的程序必须依赖于它的“父”应用程序(Office)。 1.2 宏 宏(Macro)—— 子程序 一、宏的安全性 为了防止“宏病毒”,Office提供了一种安全保护机制,就是设置“宏”的安全性。 当我们需要频繁使用带有VBA代码的应用软件时,完全可以把“宏”的安全性设置为“低”,而把宏病毒与其他成千上万种病毒同样对待,用统一的防护方式和防毒工具进行防毒。 二、宏的录制与执行 1.录制   ①进入Excel。   ②在“工具|宏”菜单中选“录制新宏”项。   ③在“录制新宏”对话框中输入宏名,单击“确定”按钮。 ④进行需要的操作。   ⑤单击“停止录制”工具栏按钮,或选择“工具|宏|停止录制”菜单结束宏录制。 2.执行 “工具|宏|宏”菜单 三、宏的编辑 1.进入编辑状态 ①“工具|宏|宏”菜单 ②选择宏名 2.代码说明 Sub、End Sub —— 子程序开始、结束 单引号 —— 注释 With、End With —— 结构语句 圆点 —— 对象之间,或者对象及其属性、事件、方法、事件之间的分隔符。表示隶属关系。 3.代码修改 ①删除注释和无关语句 ②加入循环结构 “&”—— 字符串连接运算符 4.编码方法 ①录制 ②改编 四、指定宏保存的位置 Excel:当前工作簿、新工作簿、个人宏工作簿。 ◆保存在当前工作簿或新工作簿 —— 只有该工作簿打开时,相应的宏才可以用。 ◆保存在个人宏工作簿 —— 在当前机器上多个工作簿都能使用。 Word: Normal模板、当前文档中。 ◆保存在当前文档 —— 只有该文档打开时,相应的宏才可以用。 ◆保存在Normal模板—— 在当前机器上都能使用。 五、为宏指定快捷键 1.创建宏时指定快捷键 2.录制宏后指定快捷键 ①“工具|宏|宏”菜单 ②选择宏 ③单击“选项”按钮 【例1.1】利用Word宏快速录入上角标。 六、将宏指定给按钮 ①在Excel中打开“窗体”工具栏(Word的窗体工具栏没有“按钮”) ②在工作表添加按钮 ③为它指定宏 ④按钮属性设置 —— 右击 七、将宏指定给图片或工具栏按钮 1.指定宏到图片 ①用“插入|图片”菜单工作表中放置图片 ②右击图片,在快捷菜单中选“指定宏” 2.指定给“工具栏按钮”   ①选择“工具|自定义”菜单。   ②在“命令”卡中,从“类别”列表框中选择“宏”,从“命令”列表框中将“自定义按钮”拖动到任意一个工具栏上。   ③右击该按钮,选择“指定宏”。   ④选择需要的宏名并单击“确定”按钮。   ⑤单击“关闭”按钮。 3.从工具栏中删除自定义按钮 ①选择“工具|自定义”菜单 ②用鼠标将按钮从工具栏中拖出 4.创建新的工具栏 ①在“自定义”对话框的“工具栏”卡中,单击“新建”按钮。 ②输入工具栏名,单击“确定”按钮。 范例1-1 在Word当前文档中插入多个文件的内容 1.要求 将从中央电视台网站下载的1至8套节目时间表合并到一个文档中,并进行格式控制。 2.实现步骤 ①语句、函数的选用和程序初稿的形成 录制宏 —— 设置3号字、居中,输入“中央1套”,回车。 设置5号字,两端对齐”。 插入文件(01.txt)。 ②加工初稿得到需要的程序 设置路径 循环 使用变量 ③运行程序。定义快捷健、工具栏。 范例1-2 设计一个名片制作模板 1. 页面及图文框设置 进入Word,在“页面设置”对话框中设置“纸张”宽度和高度分别为19.5厘米和29.5厘米,“页边距”上、下、左、右边距均为0.7厘米。 “插入”→“文本框|横排” 将“文本框”转换为“图文框” 设置图文框固定宽度、高度值分别为8.6厘米和5.4厘米,无边框。 2. 定义“复制排版”工具按钮并进行宏录制 在“录制新宏”对话框中: ① 指定一个宏名“复制排版”。 ② 指定将宏保存在当前文档。 ③ 新建工具栏“名片”,将宏“Project.NewMacros.复制排版”拖动到新建工具栏。改名为“复制排版”。 进行宏录制: 按Ctrl+X,剪切选定的图文框。然后按十次Ctrl+V快捷键,将图文框粘贴十份。 按Alt+↑键,选中一个图文框,设置水平位置为“左侧”,相对于“页边距”。设置垂直位置为“底端”,相对于“页边距”。 再按Alt+↑键,选中下一个图文框,用类似的方式设置水平位置为“右侧”,相对于“页边距”。垂直位置为“底端”,相对于“页边距”,停止宏录制。 3. 对代码进行加工和优化 去掉一些用于进行默认设置的不必要语句,添加循环语句,得到“复制排版”子程序。 4. 使用方法 ① 直接用鼠标双击“名片模板”或进入Word 2003后,打开“名片模板”。 ② 在图文框中输入名片的具体内容、设置字体字号、进行排版,也可以插入图片和进行艺术加工,设计出一张名片样板。 ③ 选中名片样板图文框。 ④ 单击“名片”工具栏上的“复制排版” 按钮,Word便自动将设计好的名片样板复制10份并均匀地排列在整张名片纸上。 ⑤ 用“文件”菜单中的“打印”命令将整联名片打印输出。 1.3 VBA语法基础 一、注释、连写和断行 两种注释方式: (1) 使用Rem语句。 (2) 用单引号(')号。 连写: 在一行写几个语句,用“:”分隔。 断行: 一个语句分开写成几行,用空白加下划线(_)。 二、变量和常量 1.常用的变量数据类型 数据类型 存储空间 数值范围 Boolean(布尔) 2字节 True或False Integer(整型) 2字节 -32768~32767 Long(长整型) 4字节 -2147483648~2147483647 Single(单精度) 4字节 负值范围:-3.402823E38 ~ -1.401298E-45 正值范围:1.401298E-45 ~ 3.402823E38 Double(双精度) 8字节 负值范围: -1.79769313486232E308 ~ -4.94065645841247E-324 正值范围: 4.94065645841247E-324 ~ 1.79769313486232E308 Date(日期时间) 8字节 日期:100年1月1日 ~ 9999年12月31日 时间:00:00:00~23:59:59 Object(对象) 4字节 任何引用对象 String(字符串) 字符串 的长度 变长字符串:0 ~ 20亿个字符 定长字符串:1 ~ 64K个字符 2.声明变量 变量可以不经声明直接使用,但占用存储空间较大,效率较低。 Dim语句声明局部变量 —— 声明语句放到过程中,变量在过程内有效;声明语句放到模块的声明部分,变量在模块中有效。 Public语句用来声明公共变量。公共变量可用于工程中的任何过程。 3.声明数组 通常用 Dim 或 Public 语句来声明。 默认的下标下限是0,用Option Base 语句可设置为1。 例: Dim MyArray(10,10) As Integer 声明了一个11行乘以11列的Integer型二维数组。 Dim sngArray() As Single 声明的是一个动态数组。 4.常量 声明常量用const语句。 例: Const PI As Single = 3.1415926 Public Const E As Single = 2.7182 三、运算符 1.算术运算符 符号 作用 示例 + 加法 3+5=8 - 减法、一元减 11-6=5、-6*3=-18 * 乘法 6*3=18 / 除法 10/4=2.5 \ 整除 19\6=3 mod 取模 19 mod 6=1 ^ 指数 3^2=9 2.比较运算符 符号 名称 用法 < 小于 〈表达式1〉<〈表达式2〉 <= 小于或等于 〈表达式1〉<=〈表达式2〉 > 大于 〈表达式1〉>〈表达式2〉 >= 大于或等于 〈表达式1〉>=〈表达式2〉 = 等于 〈表达式1〉=〈表达式2〉 <> 不等于 〈表达式1〉<>〈表达式2〉 Is 同引用 〈对象1〉Is〈对象2〉 Like 匹配于 〈字符串1〉Like〈字符串2〉 Is运算符用来比较两个对象引用。如果两者引用的对象相同,结果为True,否则为False。 假如MyObject、OtherObject是两个不同的对象,执行语句 Set YourObject = MyObject Set ThisObject = MyObject Set ThatObject = OtherObject MyCheck1 = YourObject Is ThisObject MyCheck2 = ThatObject Is ThisObject 后,MyCheck1 返回 True,MyCheck2返回 False。 Like 运算符做字符串的方式比较。如果字符串1与字符串2匹配,则返回 True,否则返回 False。 可以使用通配符、字符串列表或字符区间的任何组合匹配字符串。通配符: “?”代表任意一个字符 “*”代表任意多个字符 “#”代表任何一个数字(0~9) “[charlist]”代表charlist中任何一个字符 “[!charlist]”代表任何一个不在charlist中的字符 例如: MyCheck = "aBBBa" Like "a*a" ' 返回 True。 MyCheck = "F" Like "[A-Z]" ' 返回 True。 MyCheck = "F" Like "[!A-Z]" ' 返回 False。 MyCheck = "a2a" Like "a#a" ' 返回 True。 MyCheck = "aM5b" Like "a[L-P]#[!c-e]" ' 返回 True。 MyCheck = "BAT123khg" Like "B?T*" ' 返回 True。 MyCheck = "CAT123khg" Like "B?T*" ' 返回 False。 3.逻辑运算符 符号 名称 语法 And 与 〈表达式1〉And〈表达式2〉 Or 或 〈表达式1〉Or〈表达式2〉 Not 非 Not〈表达式〉 Xor 异或 〈表达式1〉Xor〈表达式2〉 Eqv 等价(同或) 〈表达式1〉Eqv〈表达式2〉 Imp 蕴涵(条件) 〈表达式1〉Imp〈表达式2〉 其中:P等价Q,当P和Q的真值相同时,结果为真,否则为假。 P蕴含Q,当P为真Q为假时,结果为假,否则为真。 4.连接运算符 “+” —— 既可计算数值的和,也可以做字符串的连接。 “&” —— 字符串连接。 例如: MyStr = "Check " & 123 ' 返回 "Check 123"。 MyNumber = "34" + 6 ' 返回 40。 MyNumber = "34" + "6" ' 返回 "346"(字符串被串接起来)。 5.运算符的优先级 由高到低次序如下: 括号 → 指数 → 一元减 → 乘法和除法 → 整除 → 取模 → 加法和减法 → 连接 → 比较 → 逻辑(Not、And、Or、Xor、Eqv、Imp)。 【例1.4】百钱买百鸡问题 假设公鸡每只5元,母鸡每只3元,小鸡3只1元。要求用100元钱买100只鸡,问公鸡、母鸡、小鸡可各买多少只?请编一个VBA程序求解。 设公鸡、母鸡、小鸡数分别为x、y、z,则可列出方程组: x+y+z=100 5x+3y+z/3=100 这里有三个未知数、两个方程式,说明有多个解。可以用穷举法求解。 范例1-3 用Word VBA查汉字区位码 1.开发背景 2.程序代码 3.自定义工具栏 4.改进——在每个汉字的右边填写对应的区位码 宏录制——获取代码(光标右移、填写文本) 改写代码 范例1-4 在Word中快速输入“国标”全部汉字 1、试验——输入一个汉字 ①通过录制获得代码 —— 输入汉字。 ②修改代码 nm = &HB0A1 Selection.TypeText Text:=Chr(nm) 2、编程——输入汉字集 汉字内码高位字节BO(176)~F7(247),低位字节A1(161)~FE(254) 1.4 对象、属性、事件和方法 对象 —— 将数据和操作过程结合在一起的数据结构。如窗体、命令按钮、文本框等都是对象。 属性 —— 对象的特性。如大小、颜色、状态等。 事件 —— 是一个对象可以辨认的动作。如单击鼠标或按下某键等。 方法 —— 对象能执行的动作。如刷新等。 【例1.5】用Excel工作表制作一个会议签到单。当每个与会人员报道时,在其姓名右边的单元格单击鼠标,自动填入当前日期和时间。 设计要点: 工作表、SelectionChange事件 获取行列号——两种方法(Row、Column;Address) 填写当前日期、时间——两种方法(Date、Time;Format) 若删除单元格中输入的内容,可按Del键。 范例2-5在Excel中实现定时提醒。 1.在上午8点45分显示一个提醒信息。 进入Excel的VBA编辑环境,在任意一个模块中定义以下两个宏: Sub Run_it() Application.OnTime TimeValue("8:45:00"), "Show_my_msg" End Sub Sub Show_my_msg() MsgBox "现在是8点45分,9点钟您有个约会!", vbInformation, "提醒" End Sub 2.模仿“自动保存”功能,在打开Excel工作簿后,每10秒钟提醒依次存盘。 利用Excel“工具|宏”菜单的“宏”项,创建以下三个宏: Sub auto_open() MsgBox "在这篇文档里,每10秒钟出现一次保存提示!", vbInformation, "注意" Call runtimer End Sub Sub runtimer() Application.OnTime Now + TimeValue("00:00:10"), "SaveIt" End Sub Sub SaveIt() msg = MsgBox("您已经10秒钟没存盘了,现在就存盘吗?" & Chr(13) & Chr(13) _ & "选 择 是:立刻存盘" & Chr(13) _ & "选 择 否:暂不存盘" & Chr(13) _ & "选择取消:不再出现这个提示", vbYesNoCancel + 64, "提醒") If msg = vbYes Then ActiveWorkbook.Save ElseIf msg = vbCancel Then Exit Sub End If Call runtimer End Sub 1.5 过程 一、工程、模块与过程 每个VBA应用程序都存在于一个“工程”中。工程下面可分为若干个“模块”。 模块包括标准模块、类模块和对象模块三种。通常,大部分工作集中在标准模块(简称为模块)中。 模块中可以定义若干个“过程”。过程可以是函数、子程序或属性。 【例1.6】子程序过程 Sub cmdSmallFont_Click() With Selection.Font .Name="Arial" .FontStyle="Regular" .Size=16 End With End sub 【例1.7】函数过程 下面是一个计算运费的函数过程: Public Function Shipping(Price) Shipping = Price * 0.1 End Function 二、过程的创建 【方法1】直接输入代码。 ①打开要编写过程的模块。 ②键入Sub、Function或 Property,分别创建Sub、Function 或 Property过程。 ③在其中键入过程的代码。 【方法2】用“插入过程”对话框。 ①打开要编写过程的模块。 ②在“插入”菜单上选择“过程”项。 ③在“插入过程”对话框中的“名称”框键入过程的名称。选定要创建过程的类型:Sub、Function 或 Property。设置过程的范围为 Public 或 Private。 如果选定“把所有局部变量声明为静态变量”,则在过程的定义中会加上Static 关键字。 【例1.8】创建一个显示消息框的过程。 ①在Excel中,选择“工具|宏|Visual Basic编辑器”菜单。 ②在工具栏上单击“工程资源管理器”按钮,或按Ctrl+R键,在VBA编辑器的左面打开“工程资源管理器”窗口。 ③在工程资源管理器窗口的任意位置单击鼠标右键,在快捷菜单中选择“插入|模块”项。   ④在VBA编辑器右面的代码窗口中,选择“插入|过程”菜单。 ⑤输入“显示消息框”作为过程名字。在“类型”分组框中,选择“子程序”。 ⑥在过程中输入语句,得到下面代码段: Public Sub 显示消息框() Msgbox "这是我的第一个过程" End Sub ⑦运行一个过程。使用“运行”菜单的“运行子程序/用户窗体”项,也可以工具栏按钮或F5快捷键。 三、代码的运行与调试 1. 运行 【方法1】使用“运行”菜单的“运行子过程/用户窗体”命令。 【方法2】单击工具栏的“运行子过程/用户窗体”按钮。 【方法3】用F5快捷键。 如果要中断执行,可用以下几种方法: 【方法1】选择“运行”菜单中的“中断”命令。 【方法2】用Ctrl+Break快捷键。 【方法3】使用工具栏中的“中断”按钮。 【方法4】选择“运行”菜单中的“重设置”项。 【方法5】使用工具栏中的“重新设置”按钮。 要继续执行,可用以下几种方法: 【方法1】在“运行”菜单中选择“继续”项。 【方法2】按F5键。 【方法3】按ALT+F5 键,跳过错误处理程序并继续执行。 【方法4】使用工具栏中的“执行宏”按钮。 【方法5】在“调试”菜单中选择“逐语句”、“逐过程”、“跳出”或“运行到光标处”等命令或使用相应的快捷键F8、SHIFT+F8、CTRL+SHIFT+F8或CTRL+F8。 2. 跟踪代码的执行 在“调试”菜单中选定“逐语句”、“逐过程”、“跳出”或“运行到光标处”命令,或使用相应的快捷键F8、Shift+F8、Ctrl+Shift+F8或Ctrl+F8。 在跟踪过程中,只要将鼠标指针移动到任意一个变量名上,就可以看到该变量当时的值。 3. 设置与清除断点 将光标定位在需要设置断点的代码行,然后用以下方法可以设置或清除断点: 【方法1】在“调试”菜单中单击“切换断点”。 【方法2】按F9键。 【方法3】在对应代码行的左边界标识条上单击鼠标。 【方法4】使用“调试”工具栏的“切换断点”按钮。 要清除应用程序中的所有断点,可在“调试”菜单中选择“清除所有断点”命令。 四、子程序 语法格式: [Public|Private] Sub 子程序名([<参数>]) [<语句组>] [Exit Sub] [<语句组>] End Sub (Public可省略不写) 【例1.9】求矩形面积的子程序。两个参数L和W,分别表示矩形的长和宽。 Sub mj(L, W) Dim S As Single If L = 0 Or W = 0 Then Exit Sub End If S = L * W MsgBox S End Sub 调用子程序例: Call mj(8,9) 【例1.10】在Word中编写一个VBA子程序,输出所有的“玫瑰花数”到当前文档。 玫瑰花数(水仙花数):三位数,其各位数字立方和等于该数本身。 Sub 玫瑰花数() For n = 100 To 999 i = n \ 100 j = n \ 10 - i * 10 k = n Mod 10 If (n = i * i * i + j * j * j + k * k * k) Then Selection.TypeText Text:=Format(n, "@@@@@") End If Next End Sub 五、自定义函数 语法: [Public|Private] Function 函数名([<参数>]) [As 数据类型] [<语句组>] [函数名=<表达式>] [Exit Function] [<语句组>] [函数名=<表达式>] End Function (Public可省略不写) 若省略返回值类型说明,系统会自动根据赋值确定。 例: 定义一个求圆面积的函数。 Public Function area(R As Single) As Single area = 3.14 * R ^ 2 End Function 该函数也可简化为: Function area(R) area = 3.14 * R ^ 2 End Function 自定义函数调用方式与系统内部函数相同。 【例1.11】制作一个如图1.10所示的“XX单位党员应交党费清单”。标准为:“基础工资”与“基础津贴”之和不超过600元者,按1%交纳党费;超过600元但不超过800元者,按1.5%交纳党费;超过800元但不超过1500元者,按2%交纳党费;超过1500元者,按3%交纳党费。要求用自定义函数计算“比率”。 制作方法: ①进入Excel,建立一个工作簿,在工作表中输入基本信息。 ②进入VBA编辑环境,在当前工程中插入一个模块,然后建立自定义函数。 ③在相应的单元格输入计算公式和函数,并将公式和函数填充到需要的区域。 【例1.12】打印一个如图1.12所示的“XX高校教师信息表”。项目包括:姓名、性别、年龄、职称、身份证号。要求年龄由身份证号求出并填入表格。 实现方法: ①进入Excel,建立一个工作簿,在工作表中输入基本信息。 ②进入VBA编辑环境,在当前工程中插入一个模块,然后建立自定义函数。 ③在相应的单元格输入计算公式和函数,并将公式和函数填充到需要的区域。 【例1.13】用VBA程序,在Word当前文档中输出若干素数。 子程序: Sub out_p() For n = 3 To 8000 If isprime(n) Then ActiveDocument.Content.InsertAfter Text:=n & " " End If Next End Sub 自定义函数: Function isprime(n) For k = 2 To Sqr(n) If n Mod k = 0 Then isprime = False Exit Function End If Next isprime = True End Function 范例1-6 中文小大写金额转换函数。 通过设置Excel单元格的“特殊”格式,也可以将小写数字转换为中文大写数字,但不够实用。 1.设计简单函数、调试、分析 2.函数的调用 与内部函数调用方式相同。 注意:函数的调用参数小写金额要求必须是文字型,而且一定要有两位小数。所以,单元个的格式要设置为“数字作为文字处理”,输入的数值要带有两位小数。 3.分析范例代码
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服