-VBA编程-从零开始学VBA_第1页
-VBA编程-从零开始学VBA_第2页
-VBA编程-从零开始学VBA_第3页
-VBA编程-从零开始学VBA_第4页
-VBA编程-从零开始学VBA_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、WORD-VBA 编程 -从零开始学 VBA从零开始,步入 Word宏编程的世界(第一讲)工作中,经常看到许多朋友在使用 Office 时已经非常地熟练,但仍不敢去接触Office的VBA编程;在网上Office的VBA编程论坛中,同样看到有朋友在其 中流连了相当长的时间,但仍然不得其门而入。问一下这两类朋友,前者觉得编 程是一件很“高深”的事,自己恐怕学不会;后者为了提高自己的工作效率,虽 然很想学,但自己一点编程的基础也没有,照着网上高手们的帖子做,反而xx 糊涂。当我问第二类朋友为什么不多看看 VBA的帮助文件时,“看不大懂,就像有 语言障碍一样。”他这样回答我。对于第一类朋友,我想说,

2、不要被自己想象出 来的“困难”吓倒,如果您没有亲自尝试过,怎么知道编程会很“高深”,又怎 么知道自己学不会?而第二类朋友如果能静下心来把基础知识补一补,相信您的 问题也会迎刃而解。那么,就让我们从最基础的知识开始,步入 Office 宏编程的 世界吧。文前的几点说明:1、虽说本文用到的程序在 office2007 与 office2010xx 同样可以正常运行, 但考虑到目前单位办公用机的实际情况,本文所有的实例主要还是面向 Office2003 的用户; 2、为了便于各位读者理清思路,避免文章涉及面太广,本文 主要以office2003xx最常用的Word为主进行讲述,有与其它 Office

3、套件相关联 的地方,将单独说明;3、为避免学习过程xx的枯燥乏味,本文没有像传统编程 教材那样以理论知识为线索展开,而是将不同的知识点放到了几个不同的实例之 xx 进行讲述。所以,把每个实例“做”一遍,细心体会每个实例的知识点,将有 助于您快速掌握VBA的编程技术;单纯地“看”,贝卩无助于您的学习。本文的宗 旨是一一完全面向初学者!或许您还能以此为契机叩开奔向VB6 0或VB.NET的WORD-VBA编程-从零开始学VBA大门,说不定您还能编出一、两个病毒玩玩儿(当然仅限于玩玩儿,千万别做出什么傻事来!)!好了,下面就开始我们 Word的VBA编程之旅吧,愿您旅途愉快!实例一:“你好,世界!

4、”知识点:1、熟悉VBE的编程界面;2、什么是VB VBE VBA 3、什么是过程、工程。不要以为这些知识点有多难,让我们一步一步地来。启动Word,指向工具一一宏一一VB编辑器,打开VB编辑器的界面,如图1-1“VB编辑器”就是 VBE VBE是 Visual Basic Editing的缩写。我们在 VBE编程环境中所使用的编程语言就是“ VBA,即Visual Basic for Applications 的缩写,VBA语言是我们所熟知的VB编程语言的一个子集。VBE编辑器界面的菜单栏与工具栏就不必说了。界面左面中间部份是“工程资源管理器”所在的“工程资源管理区”,每一篇Word文档中所

5、编写的程序,WordWORD-VBA编程-从零开始学VBA都把它看成为一个“工程”,“工程资源管理器”就是对这些工程进行管理的地 方;界面左下方是“对像属性设置区”,我们可以对自己要用到的对像的属性进 行设置,第四个实例中,我们将对“属性设置”进行详细解说,现在大家不必管 它;界面右面大面积空白的区域是“代码编辑区”,我们编写的所有代码都放在 这儿。如果看不到这个空白区域,则打开“插入”菜单,插入一个“模块”就行 了。如果“工程资源管理器”已有“模块”,则双击模块名,就能打开“代码编 辑区”。好,现在我们就在这个 VBE环境下,利用VBA语言,来编写我们的第一 个工程(即程序)。请在“代码编辑

6、区”中输入如下的代码:sub A ()msgbox( “你好,世界! ”)end sub注意,代码“ msgbox("你好,世界!”)” 一句中的引号与括号为英文标点。点击工具栏上的黑色三角形的“播放键”,或按下 F5键运行这个程序,您将看到 一个弹出的消息框。如图1-2。代码解说:sub是VB编程中申明一个过程的语句,sub A ()申明了一个名叫A的过程,A后面跟了一个括号,它的作用现在大家暂时不用管它。整段程序结尾WORD-VBA 编程 -从零开始学 VBA的end sub语句,表示过程“ A”在此结束。每一个程序都必需有开始与结束的标志,所以,从Sub A ()到End su

7、b就构成了一个完整的“过程”。Msgbox是一个函数,它的作用是弹出一个消息框来,它后面括号中的内容就 是要在弹出的消息框中显示的内容。该函数在我们的第二个实例中,将做详细讲 解。本实例的知识扩展:1、打开Word,指向工具 xx,再点击“ xx”按钮,打 开“xx名”对话框。这时,我们就可以看到刚才我们编写的名叫“ A”的xx。选 中“ A”,点击“运行”按钮,就能运行该 xx。2、同上操作顺序,打开“ xx名” 对话框,在“ xx名”中新输入一个名字“ B” (注意没有引号),再点击“创建” 按钮,这时就会打开VBE编辑器,并已为我们生成了一个名为“ B”的空过程。该 过程中的绿色文字,就

8、是这个 xx 的注释。(如果我们要对自己所编写的代码进行 注释,可在注释语句的前面加上一个英文状态下的撇号,该注释的语言是不会被 程序运行的。)用这个方法创建过程,可以避免手工输入时疏忽掉程序结尾的 End sub。好了,实例一到此结束,回顾一下课前的知识点,都掌握了吗?如果觉得没 有问题了,就准备进入我们的第二个实例吧。从零开始,步入Word宏编程的世界(第二讲)实例二:基本的对话框函数知识点:1、认识消息框函数MxgBox与输入框函数 InputBox ;2、什么是常量、 什么是变量、 申明变量的方法是什么; 3、用“&” 符号连接字符串。想想我们平时与他人谈话时的形式你提问,他回

9、答;或是他提问,你回 答。我们所编写的程序,在与计算机进行交互的过程xx ,其形式也是这样的一问一答。所以,几乎所有的编程语言都提供有直接与计算机进行对话的函数,在 VBAxx这样的最基本的函数是消息函数“ MsgBoX与输入框函数“ InputBox ”。 请输入以下代码并运行:''' =还有待完善的程序一 =subB()Dim XX= inputbox(" 您的姓名是: ") 。 Msgbox( " 欢迎您" & X & " 朋友! ")End Sub注意:1、在输入“ Msgbox(&qu

10、ot;欢迎您"& X & "朋友!")”这行代码时,括 号内几个字符串之间有空格,没有输入空格的话会出错,出错时,代码将以红色 显示。2、本程序运行时如果点“取消”按钮,其实会出现问题,关于对这个问 题的解决方法,将在后面讨论。所以,我们先称本程序为“还有待完善的程序”。 (朋友们可以先试一下,看看会出现什么问题?)。运行效果如图 2-1 与图 2-2 。看到了吗?这就是最简单的与计算机进行对话的效果。代码解说:从Sub B()到End sub就是一个完整的过程“ B”。“InputBox ("您的姓名是: ") ”这句代码是显

11、示一个“输入框”,请您输入自己的姓名。这句 代码事实上就是一个计算机提问,人回答的“对话”过程。其中,“ InputBox ” 函数的作用就是弹出一个输入框,等待我们回答计算机的提问。当然,我们在回答计算机时,可能填的是“ xx”也可能填的是“ xx”, 这个答案本身是不固定的,所以,我们将这个答案的值赋予“变量”“X”。这下,大家可能就知道“变量”的含意了吧?在程序运行中,我们经常会遇到值 不能确定,或者是可能会发生改变的某个数据,在这个时候,我们就用一个“符 号”来“代替”这个可能会变化的值,这个用来代替不能确定的值的“符号”, 就是“变量”。现在,我们删去本程序中的“ Dim X”这句后

12、,再运行一下试试效果。怎么样,是 不是感觉不到区别?(如果程序报错说“没有申明变量”的话,没有关系,请接 着看下面的内容。)在 VBA语言中允许我们不申明变量就直接运用它,所以程序 仍然能够正常运行。“ Dim X”这句代码中的“ Dim”就是申明变量的函数,“ Dim X”就是申明了一个名叫“ X”的变量。在“ X=inputbox("您的姓名是:")”这句 代码中,我们利用等号,将输入框中取得的值赋予给了变量“X”。虽说我们不申明变量就可以使用它,但这绝对不是个好的习惯。首先,在一 些代码较长的程序中,您能保证那些名字较长的变量在后面用到时,您不会输错 吗?其次,自己不

13、申明变量,时间久了,那些较长的程序可能会连您自己也看不 懂;另外,程序在访问申明过的变量时,速度会比访问没有申明过的变量要快一 些。为了避免我们使用变量时出错,我们可以在 VBE编辑器菜单的工具一一选项一一 编辑器选项卡上,选中“要求申明变量”(见下面图2-3、2-4),这样VBE会自动在我们每一个工程的前面加上一句“ Option Explicit ”,这句代码将检查我 们所要使用的变量是否申明,没有申明的话就会中止程序的运行。做了上述的操 作后,我们再运行去掉“ Dim X”语句的过程,程序就会报“没有申明变量”的 错误。WORD-VBA 编程 -从零开始学 VBA总引用pmg件宏 Qi)

14、r ,.WORD-VBA编程-从零开始学VBA运行® 工具 外捋程序)窗口 帮助®-IflJxl选项.Uornal雇性 数字签名关于变量,还有一些其它的知识,我们将在实例 XX进行更深一步的学习,现 在就到这吧。“Msgbox("欢迎您"& X & "朋友! ”)”这句中的“ msgBoX函数,大家已不陌生,它的作用就是弹出一个消息框来(在本程序中,这个消息框就是计算机 对我们输入姓名后的回答。)。在这个消息框所显示的文字中包含了三个部分。字符串“欢迎您”、字符串“朋友! ”和变量“ X”所可能对应的字符串“ xx、 XX”等。

15、在VBA语言中,我们使用“ &”符号来连接字符串,所以我们在程序 运行最后,看到的是一个像图2-2那样完整的欢迎语句。VBA语言中,在使用“ & 连接符号时,请一定注意字符串与字符串之间有一个空格,否则程序一定会出错。由于MsgBo函数与InputBox函数是两个非常常用的对话函数,所以,我们再对 它进行更深一步的学习。使用MsgBox函数时的标准格式:变量二MsgBox(”要显示在这儿的语句”,按 钮的参数,”消息框的题目”)例子:丫二MsgBoX”欢迎您” & X &”朋友! ”,0, ” 这里是欢迎对话框”)请注意格式中英文状态下的引号、逗号与空格的使用。

16、使用InputBox函数时的标准格式:变量=lnputBox( “要显示的提示文本”,” 输入框的题目” ,”输入框中默认显示的语句” )例子: X= InputBox( “请输入您 的姓名” , ”这里是输入对话框” , ”您的姓名请输入到这儿。” )。根据上面的格 式,请修改本实例的程序代码为:''' =还有待完善的程序二 =Sub B()Dim XDim YX = inputbox(" 您的姓名是:",”姓名输入框”,”您的姓名请 输入到这儿。” )丫 = Msgbox( " 欢迎您 " & X & &quo

17、t; 朋友! ",0, ” 这里是欢迎对话 框.”)End Sub本段程序应该很容易读懂吧?运行一下,看看与前面程序的区别在什么地方?再分别把MsgBox函数的参数0替换为0、1、2、3、4、5这几个参数并运行, 看看又有什么不同?怎么样,对话框中给出的提示是不是更丰富?下面的图 2-5 与图2-6是MsgBox函数的参数为“ 5”时的运行效果。(请与前面的图 2-1与图 2-2 对比一下,看看到底哪些地方有了变化?)。程序写到这么详细,您是否已经觉得它已经很完善了呢?那么,在当程序要 求您输入您的姓名时,如果您选择了“取消”,会有什么现象呢?对,“取消” 按钮同样会向程序返回一个值

18、。 为了使用函数时更灵活一些,VBA将这些返回的值 “固定”为以下的数值,这些在程序中被固定的值,就是“常数”。MsgBox函数的常数如下:“确定”按钮被单击时,返回“ 1”;“取消”按钮 被单击时,返回“ 2”;“终止”按钮被单击时,返回“ 3”;“重试”按钮被单 击时,返回“ 4”;“忽略”按钮被单击时,返回“ 5”;“是”按钮被单击时, 返回“ 6”;“否”按钮被单击时,返回“ 7”。InputBox 函数在使用过程中,当人们输入了值的时候,选择“确定”或按下 回车键,则返回输入框中的内容,输入框中的内容显示不是“固定”的,也就是 说它不是常数;但是,如果人们在要求输入之时选择的是“取消

19、”按钮,则会返 回一个值,这个值是“空值”,注意“空值”并不是“零”。所以, InputBox 函 数只有一个常数“空”。下面,我们用:如果(If )、那么(Then)、否则(else )、结束(end if ) 判断语句来完善我们今天的实例。关于“ If ”判断语句,不是本实例的学习重点, 下节课我们将会详细介绍它。代码中必要的地方已添加了注释(还记得为代码添 加注释的方法吗?)。''=完善后的 B程序=Sub B()Dim XDim YX = InputBox(" 您的姓名是: ", " 姓名输入框 ", " 您的姓名请输入

20、到这儿。 ")If X <> ""Then '如果X的值不为“空”,那么 Y = MsgBox("欢迎您"& X & "朋友! ”, 0,"这里是欢迎对话框.")Else '否则(即,X的值为“空”)End If '结束End Sub代码“If X <> "" Then ”中的“ v>”是大于与小于符号,表示“不等于”的 意思。分别运行本程序与最前面的程序,并选择“取消”,对比一下运行的效果,从完 善后的程序中想必您不难看出“

21、常数”在程序中的作用了吧?请再多体会体 会这本实例中的这几个例子,您对 MsgBox与InputBox这两个函数的熟悉程度,将 直接影响您后面的学习。加点油吧。本实例的知识扩展:1、请将本课中学到的MsgBox函数的参数分别运用到实 例一中,看看效果如何。2、请思考:哪些情况下,会使用到 MsgBox函数的不同 返回的值?好了,实例二到此结束,请再回顾一遍本实例的知识点,您都掌握了吗?是 不是觉得VBA并不像想象中那么困难?如果您确信已完全掌握了前面这两课的内 容,那么,准备接受实例三的挑战吧!从零开始,步入Word宏编程的世界(第三讲)实例三:“猜数游戏”知识点: 1、学习变量的类型与转换;

22、 2、掌握程序的循环与判断; 3、学习随 机数的生成。通过对前面两个实例的学习,相信您对自己掌握 VBA编程已充满了信心。今 天,我们将编写一个小小的游戏程序。这个游戏程序中既包含了新的知识点,又 要考验您对前两课知识运用的熟练程度,就让我们静下心来克服这个小难关吧。游戏内容是这样的:电脑生成一个 0到 99之间的整数,请您来猜这个数是多 少,每猜一次,电脑都给您一个提示,直到您猜中为止。程序思路:1、电脑首先生成一个0到99之间的整数;2、请您输入您所猜的数;3、把您输入的数与电脑所生成的数进行比较,并给出“您猜大了”或“您 猜小了”的提示;4、如果您猜对了,则退出程序;如果您没有猜对,则循

23、环回第二步重复运 行,让您再次输入自己所猜的数。请看代码,必要的地方已添加了注释。程序中退格与对齐是为了便于理解。请您先试着自己把代码读一读,看看能不能读懂。)' ' =程序名“您猜” =Sub 您猜 ()Dim a, b, c, d '申明了四个变量,变量间用英文逗号分开,与前面实例二申明变量的写法不同,结果相同。a = 0 '这个变量用于计算您猜了多少次。Randomize'准备生成一个随机的数字,先初始化随机数生成器。b = In t(100 * Rnd)'生成一个百以内的随机数,“ Rnd'就是“随机数生成函数”。Do开始循环a

24、= a + 1 '您猜的次数增添一次。当再次循环到这儿时,次数会继续往上加。c = InputBox("请输入您所猜的数”)将取得的值赋予变量“ c”,“ c”是字符串!d = Clnt(c)'将变量“ c”转化为整数,再将值赋给“ d”。If b <d Then '进行比较,如果猜大了。MsgBox (" 您猜的数大了 ") '显示比较的结果。ElseIf b > d Then '进行比较,如果猜小了。MsgBox (" 您猜的数小了 ") '显示比较的结果。Else: b = d

25、'进行比较,如果猜对了。MsgBox (" 哈哈, 您猜对了 !") '显示比较的结果。Exit Do '既然已经猜对了,就跳出循环。End If '结束比较。Loop'回到前面的Do,继续循环。WORD-VBA 编程 -从零开始学 VBAMsgBox (" 您猜了" & a & " 次!") '弹出消息框,并使用了字符串连接。End Sub '结束程序。运行本程序,看看效果。并根据注释,体会循环与判断在本程序中的作用。 代码解说:a 这个变量,用于计算您所猜的次

26、数。 每多猜一次, 它就在自身的基础上加 1, 其相应的代码是: a = 0 与 a = a + 1 两句。程序结尾时,将在消息框中显示“ a” 的值。b这个变量,用于记录一个随机生成的数字。 其相应代码为:Randomize与b = Int(100 * Rnd)这两句。其中,Randomize这个语句在本程序中非常重要,如果您 去掉这个函数,再多运行本程序几次的话,您就会发现猜测的答案居然是有规律 的!换句话说,只要我知道了电脑所出数字的规律我就可以“百发百中”地一 次猜中这个数!所谓“随机数”顾名思义就应该是“随机”产生的数,在没有Ran domize语句的情况下,这些产生的数看似很“随机

27、”,其实有规律,这种随机 数就是“伪”随机数。所以,Ran domize语句的作用就是生成“真正”的随机数。 Rnd函数是生成一个介于0与1之间的小数,乘以100是让这个小数成为一个介于 0到100之间的数;Int函数的作用是将一个数的小数部分去掉,只保留它的整数 部分,即“取整”。通过这样一个可能大家觉得有点复杂的过程,我们得到了一 个0到99之间的整数(大于 99而小于 100的小数在取整后即是 99,所以前面我 们说“乘以 100是为了生成一个介于 0到100之间的数”,而真正取整之后最大 的数只能是 99。),并将它的值赋予了变量“ b”。 生成随机数,是很多程序中要用到的功能(特别是

28、游戏,比如游戏中随机生成不 同的怪物或不同的宝物等。),上面的内容希望大家能悉心地体会。WORD-VBA 编程 -从零开始学 VBAc 这个变量,是取得输入框中我们所猜测的数字。其相应代码是“ c = InputBox(" 请输入您所猜的数 ") ”,但计算机并不认为我们所输入的是一个数字 (整数),它把我们输入的内容看成是文字(字符串)。显然,文字是没有办法 去与数字比较大小的,所以,我们要用到变量d。d 这个变量,是一个整数。它是利用了“转换函数”“ CInt ”,将我们所 取得的字符串变量“ c”转换成了一个整数。其相应代码是“ d = Clnt(c) ”。也 就是说

29、,本程序中最终进行比较的,是两个整数“b”与“ d”。这里涉及到VBA数据类型的知识。对于VBA的数据类型,这里主要为大家介绍两种:lnteger 包含 -32,768 到 32,767 之间的整数。该类型的数值基本上可以满 足我们通常使用整数时的需要; String 包含变长字符串,最大 xx 可为 20 亿 个字符。该类型的值其实就是我们常用的字符串。 我们在程序当中用的 Clnt 函数, 就是将一个 String 类型(字符)的值,转换成了一个 lnteger 类型(整数)的值。 所以我们称 Clnt 函数为“转换函数”。与Clnt类似的常用转换函数还有:Clin、CSng CStr等。

30、可以把VBA帮助文件中 的“转换函数”与“数据类型”相互参照进行学习。 ( 相信这个时候您看帮助文件 中的这部分内容,将不会再是一件难事。 )感觉到困难了吗?如果感觉到了困难,就请将上面的内容再体会体会。准备 进入下一个知识点。程序中的DO Exit Do以及Loop为一个整体。其中,Do是开始进入循环;Loop 是指回到Do语句处,再次进行循环;Exit Do是指当符合某一个条件时就直接退 出循环。在本程序中,ExitDo是指当猜中了(即b=d)时,退出循环;而无论是猜大了( b>d),还是猜小了( bWORD-VBA 编程 -从零开始学 VBA程序中数字的比较, 是利用 If 语句来

31、实现的。 在实例二中, 我们已接触过 If 语句, If 语句的基本格式是:If (条件)Then(结果)End I f '(结束If判断语句)在 If 语句判断的过程当中,还可以有子判断语句: Elseif then。对于一个具有多重判断的语句,我们大致可以这样理解:如果(If ),那么(Then), 否则(Elseif),那么(Then),再否则(Elseif),那么(The n)(Elself 根 据情况可以套嵌很多层)最终 (Else) ,结束判断( End If )。本实例的知识扩展: 1、试一试自己在程序结尾处再添几句,判断所猜的次数:如果小于六次,给出一个评价“优”;等于

32、六次,给出一个评价“良”;大于六 次,给出一个评价“您还需努力!”。 2、试一试给程序补充部分内容,其功能为: 在猜完一次后,询问游戏人“您还愿意再玩一次吗?”,并根据游戏者的响应, 再次运行程序或退出程序。 3、如果在刚开始游戏让我们输入数字时,我们选择了 “取消”就会出错,您现在能利用自己已有的知识来解决这个问题吗?好了,到这里,我们再回过头来看一看这个程序,理解起来还有困难吗?本 实例可能比前两个实例稍难一点。如果您能顺利完成知识扩展中的问题题,那么 xx 您,您已过了 xx 的第一个小难关,可以进入下一步的实例四了,如果您还存在 疑问,则再请多动手把前三个实例 xx! 附:完善的猜数游

33、戏Sub 您猜 ()Dim a, b, c, d, e, fe=6该数字用于计算所猜次数是否为优、良等DoWORD-VBA 编程 -从零开始学 VBARandomizeb = Int(100 * Rnd)Doa = a + 1c = InputBox(" 请输入您所猜的数 ")d = CInt(c)If b < d ThenMsgBox (" 您猜的数大了 ")ElseIf b > d ThenMsgBox (" 您猜的数小了 ")Else: b = dMsgBox (" 哈哈,您猜对了 !")Exit

34、 DoEnd IfLoopMsgBox (" 您猜了" & a & " 次!")If a>eMsgBox (" 您还需努力! ")Elseif aMsgBox (" 您的猜数能力:优! ")Else a=eMsgBox (" 您的猜数能力:良! ")End iff=MsgBox (" 您还愿意继续玩吗? ",4, ”继续游戏” ) ''注意此处常数的使 用WORD-VBA 编程 -从零开始学 VBAif f=7 then '

35、9;注意此处消息框返回值的使用exit doelseend ifloopEnd Sub从零开始,步入 Word宏编程的世界(第四讲)实例四:窗体与基本的控件知识点: 1、窗体与控件的使用; 2、什么是“设计时”、什么是“运行时”; 3、了解什么是对像、属性、方法和事件。扎实的基础知识是我们顺利掌握 VBA编程语言的先决条件。说到基础知识,我 想告诉朋友们 我们必须建立起“面向对像”的编程思想。“面向对像”进行 编程的思想实在是太重要了!我们所接触的所有事物都是对像,都有属性,也都 有属性值。如果您不相信?那么请看您怎样来描述自己家里的电视机呢?它 的身高?体重?住址?年龄?颜色?频道个数?声道

36、个数?音量大小?屏幕大 小?分辨率?刷新率?对,这些都是电视机的“属性”,在这里,“电视机” 就是一个“对像”。以下,假设我们生活在“ VBA编程语言”当中,生活中的事物 就是VBA的对像一一那么,我们怎样来找出一个“对像”的属性,或是怎能样来 对“对像”的属性进行赋值呢?看下面的程序:=程序名“您想看几频道” =Sub 您想看几频道 ()Dim XWORD-VBA 编程 -从零开始学 VBAX = InputBox (“请输入您想看的频道的值:”)电视机 频道 = XEnd Sub运行这代码,输入您想看的频道的值,比如“ 10”或是“ 36”,那么,您就 会看到 10 频道或是 36 频道的

37、节目。这里,“电视机”是对像,“频道”是它的 属性,“ 10或 36”是它的属性值。在“对像”引用自己的某个“属性”时,我们 在它们之间用一个小圆点 (英文的句号) 来表示, 具体的格式如代码“电视机 频 道二 X”中所示;设置值的时候,用等号来赋予它。说到赋值,您是不是想执行“电视机屏幕尺寸 = 100 吋”命令呢?呵呵, 有些事物的属性值是“只读”的,不能修改,比如电视机的重量等。现在,我正在看一个节目,但我不知道这个节目所在的是几频道,怎么办呢?、圭 =7.工口请看程序=程序名“当前频道是多少” =Sub 频道是多少()Dim 频道的值频道的值 = 电视机 当前频道MsgBox ( “频

38、道的值” )End Sub程序不难懂吧?前一个程序“您想看几频道”中,我们是将“值”赋予对像 的属性,后一个“频道是多少”程序中,我们是取得对像属性的“值”。这两种 类型的程序在使用时刚好相反,但,它们在 VBA编程语言中的运用几乎可以说是 无处不在!请一定要认真体会这两个程序中关于“对像”、“属性”与“值” 之间的关系!那么,什么又是事件和方法呢?对于电视机来说,当它的电源接通时就发生了“电源接通事件”,反之,它的电源断掉时就发生了“电源断掉事 件”。方法,则是指人对电视机进行的操作,比如,现在显示的是 10 频道,我在 电视机的频道调节按钮上, 向前按了 5 次,则进入了 15频道。电视机

39、支持使用“频 道按钮”进行“频道调节”的动作,就可以说成是它支持“用按钮调整频道”的 “方法”,“ 5”就是这个方法的参数(只要是您家里电视机所支持的值,当然都 可以作为它的参数。)。那位朋友说了“喂,大哥,我们可是在学习 Ofice的VBA编程语言啊!怎么 扯到电视机上去了?! ”好吧,我们来谈 Ofice。Office是一个对像,Word是一 个对像,窗口是一个对像,文档是一个对像,段落、标题、一行文字、一个字符、 一个标点、一个表格、一个xx无一不是对像!它们都有颜色、大小、宽窄、 数量、位置等等属性。我们利用 VBA语言进行编程,不外乎就是为了控制某 个对像的某个属性值以方便我们的工作

40、罢了!对于对像、属性、方法、事件,我 们先了解这么多,在实例六我们将继续对其进行学习。今天,我们先试试这些知 识在窗体与控件上的运用吧!一、界面制作1、打开VBE指向“插入”菜单,点击“插入用户窗体”命令(也可以在工 具栏中做同样的动作。),窗体的名称默认为“UserFormT,如图4 1。2、点击控件工具箱按钮,打开控件工具箱,选中工具箱中的“按钮”控件,在窗体上“画”出一个按钮控件(“按钮控件”就是控件工具箱中的那个方形的小块。), 按钮的名称默认为“ CommandButton”1 。WORD-VBA编程-从零开始学VBAMicrosoft Vi suit Esic -新版UF£

41、;ic空件® 编辐 视團 插入(X)構式© 调试)运行® 工具 外接程序)窗口® 粘助怨)LJJ匮骞置咎厚| 丘具箱按钮在这儿J I U+ flOTB«l二Project CSf 版小 日臼 Hicrusoft Wen 團j Thi sD&cufli e:F凸窗体jJ* g J!I!I1?离 新版Uflic - UserForml (UmerFonn)EJxJ啟莎湘期哪凝删豳邨0 湘筒邨脚卿阪i卿凶竺淨梦UstrForml这是窗体2d|UserFf按字母倍称】控件Ik A胡匡函7 a = EackCcBorderBorder.L7.?7

42、(:-:?臂:£:tgir.T.一C amn uidfiut t onlC pti cCycleli rmuyc±Tiv-fonrinII属性赋值方法之一:注意,下面进入今天的关键知识点:1、首先,双击做好的窗体或按钮,就会 打开代码窗口。保证光标在窗体或按钮代码的正中间,按下F5键运行它,或在“运 行”菜单中选择“运行用户窗体或子过程”命令运行它,看看效果。如图4-2左面。这里需要注意两点:A、如果光标不在代码中间,而您的模块中又还存在其它的代码的话,运行时,VBE会让您选择要运行的宏名称;B、如果工程被锁定而不能运行的话,首先请在“工具宏xx ”对话框xx把xx设为“低

43、”,然后删除 VBExx所有存在的代码,并关闭 Word,等一下再 重新启动,重新开始本步的操作。当然,如果您VBExx以前的代码需要保存的话,最好把它剪切到其它文本 xx 去,要用时再复制过来。最后,千万记得在本实例完 成之后,把“xx”改回为高,以避免宏病毒。2、右击按钮CommandButton选“属 性”,(如果“属性”对话框本来就的打开的,则选xx按钮CommandButton1然后直接修改属性就行了。)在“属性”对话框 xx 选“ Caption ”,在右面的属性 值xx输入“开始运行”。保存后,再次运行,看看与第1步运行时相比,效果有 什么不同?对,按钮上面的提示文字已经改变成“

44、开始运行”了。对比效果如图 4-2。以上这两个步骤xx,需要我们应该掌握的知识就是“怎样在属性对话框xx,对控件的属性进行赋值”。下面,我们还要为控件的属性赋值,但赋值的方法有 所不同,请注意体会以下赋值方法与上面的区别。三、属性赋值方法之二 请撤消前面添加“开始运行”属性的操作,回到按钮表面提示文字仍然是“CommandButton”1 时的状态,双击“ CommandButton”1 将打开“CommandButton”1 的代码窗口,代码窗口已为我们生成了控件被单击时的空过 程。现在,我们就在这个“ CommandButton”1 的 Click 事件(即按钮被单击的事 件)空过程中,添

45、加如下的代码:''' =用代码修改属性 =Private Sub CommandButton1_Click()CommandButton1.Caption = " 开始运行 "End Sub 本实例之初,我们学习了为对像的属性赋值的格式,那么,您看到代码 “CommandButton1.Caption = " 开始运行 " ”时,应该不难理解吧?代码中的WORD-VBA 编程 -从零开始学 VBAComma ndButto n1是指窗体上的那个按钮,如果有多个按钮的话,就会分别被命名 为CommandButton2 Command

46、Button3等等。如果要解释上面的程序,就应该 是:当按钮被“ Click ”(单击)时,按钮的“ Caption ”(提示文字)就被改变 为“开始运行”。运行本程序并单击按钮看看出现了什么效果?在按钮被单击前, 运行的效果与第 1 步一样(与图 4-2 左面相同。);当按钮被单后,是不是与第 2 步运行时的情况一样? (与图 4-2 右面相同。 )第 2 步中, 我们是“先设计好了” 按钮的提示文字再运行;第 3步中,我们根本没有“设计”按钮的提示文字,而 是已经“在窗体运行的时候”利用了按钮的单击事件,改变了按钮表面的提示文 字。对于第 2 步中的做法,我们称之为“设计时”修改控件,对于

47、第三步中的做 法,我们称之为“运行时”修改控件。“设计时”修改控件的属性虽然更方便、 更容量掌握,但它往往没有“运行时”修改控件属性那么灵活。下面我们再做一 个例子,动态改变按钮与窗体的属性值。再体会体会“运行时”修改属性值的灵 活性。将前面的代码修改如下:=利用单击按钮事件,动态改变按钮名与窗体颜色Private Sub CommandButton1_Click()If CommandButton1.Caption = "CommandButton1" ThenCommandButton1.Caption = " 开始运行 "ElseIf Comman

48、dButton1.Caption = " 开始运行 " ThenCommandButton1.Caption = " 点我干嘛,别烦我! "ElseIf CommandButton1.Caption = " 点我干嘛,别烦我! " ThenUserForm1.BackColor = RGB(255, 128, 128)想让我给你点颜色吗? " ThenCommandButton1.Caption = " 想让我给你点颜色吗? "ElseIf CommandButton1.Caption = "U

49、serForm1.BackColor = RGB(0, 128, 64)CommandButton1.Caption = " 你真的不怕我变脸吗? "ElseIf CommandButton1.Caption = " 你真的不怕我变脸吗? " ThenUserForm1.BackColor = RGB(128, 0, 255)CommandButton1.Caption = " 怕了你了,我逃! "Else: CommandButton1.Caption = " 怕了你了,我逃! "Unioad UserForml

50、'“ Unioad”是窗体的一个方法,其作用是卸载窗体。End IfEnd Sub本程序中用到了窗体的颜色属性(BackColor)及其属性值(RGB的知识, 我们在利用VBA对Word中的文字进行修饰时,经常会用到颜色属性及其值的设置, 这里正好学习一下。代码最后的“ Uni oad ”是窗体的一个方法,其作用是卸载窗 体,与平时我们关闭窗体时按右上角最大、最小化按钮那里的“X”按钮等价。有卸载就有加载,加载并显示窗体的命令是“ Show”,该命令的使用格式是“窗体 名.Show”。本实例的知识扩展: 1、朋友们在“设计时”属性设置中, 下点功夫摸索摸索, 尽快熟悉窗体、 按钮的各种

51、属性; 2、本例只用到了“控件工具箱”中的按钮控件, 其它的控件虽然在作用上各不相同,但在使用的方法上与按钮控件没有什么大的 区别,朋友们就自己尝试一下其它的控件吧; 3、请您制作一个窗体,上面加上两 个按钮,一个按钮运行实例 xx 的游戏,另一个按钮退出游戏。实例四到此结束,怎么样,有收获吗?下一个实例“Word版的媒体播放器”,将是我们前面知识的一个集中练习,也将是一个会让您很有“成就感”的练习。 还等得及吗?从零开始,步入Word宏编程的世界(第五讲)实例五:Word版的“媒体播放器”知识点:1、进一步熟悉VBE的操作界面;2、学习使用窗体与控件进行编程;3、学习运用附加的控件进行编程。

52、WORD-VBA编程-从零开始学VBA通过以上四个实例的学习,今天,我们终于迎来了激动人心的时刻一一编写 一个“ Word版的媒体播放器”! “媒体播放器”大家不会陌生吧?对,就是开始 程序附件娱乐中的“ Media player播放器”!相信本实例会给您带 来成就感!也算是对我们前四个实例辛苦学习的一点点回报吧!当然,在高兴之 余,千万不要忘了对本实例中知识点的学习。其实,本实例中,理论知识上的难 度几乎没有,但操作上的步骤却相当多,朋友们耐心一点。步骤一:界面的制作1、回忆实例xx的操作方法,在VBExx添加一个窗体,窗体上添加两个按钮。 将窗体的“ Caption ”属性改为“ Word

53、版媒体播放器”,再分别将两个按钮的“Caption ”属性改为“开始运行”与“结束程序”。2、右击控件工具箱,选“附 加控件”,将“附加控件”面板的滚动条拖动到最底端, 然后选xx “WindowsMedia player ”控件。“确定”后,退出“附加控件”面板(图 5-1)。这时控件工具箱 最下面就多出了一个网格状的“ Windows Media player ”控件。3、选中“ Windows Media player ”控件,在窗体上按您的需要和喜好“画” 出它将要显示的范围。4、现在,我们就可以利用“属性对话框”开始对整个窗体 及窗体上所有的控件进行“ xx”。“ xx”的内容就按您

54、自己的喜好看着办好了,WORD-VBA 编程 -从零开始学 VBA 反正是“设计时”修改控件,不会影响最终程序的运行。我修改了窗体和按钮的 颜色,并修改了按钮上的字体以及字号和字色。最终的效果如图 5-2 。准备工作已就绪,开始编写代码了吧!步骤二:编写代码1、双击“开始运行”按钮,在 VBE自动生成的空过程中输入如下代码:Private Sub CommandButton1_Click() MediaPlayer1.FileName = "D:MyMpgxx2.mpg " End Sub( 注意 : office2003 及以上版本, xx 代码应该是: WindowsM

55、ediaPlayer1.URL="D:MyMpgxx2.mpg " ,这是因为在这些版本上, MediaPlayer 控件的属性与方法已略有些变化了。 )代码解说:关于“过程”,就不消多说了吧?“ MediaPlayer1 ”就是我们在 “设计时”所添加的“ MediaPlayer 控件”。它尾巴上的“ 1 ”,指它是在本窗体 上的第一个“ MediaPlayer 控件”。“ FileName”是“ MediaPlayerl ”的一个属 性,这个属性的值就是将要播放的媒体文件的名称 (还记得为属性赋值的格式吗? 这整句代码可是一个标准的赋值语句。)。等号后面大家就很清楚了是

56、要播 放的文件的路径与文件名。当然,您的电脑上恐怕不会有“ D:xx2.mpg”文件的,您可要根据自己电脑上的实际情况输入这部分的内容。2、双击“结束程序”按钮,在打开空过程中输入Private Sub CommandButton2_Click()Unload UserForm1End SubWORD-VBA 编程 -从零开始学 VBA代码解说:这段代码如果还需要解说的话,就请再看看实例四的后半部分内 容。完成前两步代码输入后,可以将光标定位于“开始运行”按钮的代码区正中 间,然后按下 F5 键!看到了什么?怎么样,有成就感吧?还没完呢!赶快“结束程序”编完最后的代码吧! 3、回到Word指向

57、工具一一宏,打开“宏名” 对话框(不要告诉我, 你找不到这个对话框) ,在“宏名”中输入“我的播放器”(没有引号),点击“创建”按钮,在 VBE所生成空过程中输入一一Sub 我的播放器 ()UserForm1.ShowEnd Sub本段代码与上段代码一样,也无需解说了吧?4、回到Word打开工具一一自定义,拖动“命令”选项卡的滚动条到最底部, 选中“类别”窗格中的“宏”,再找到右边“命令”窗格中的“我的播放器”宏, 左键按住它, 不要让它跑掉 (?),拖动它到“任意”的“菜单栏”或“工具栏” 上,好,松左键,它跑不掉了(图 5-3 ) 。保证它是被选中的,再回到“命令”选 项卡上,点击正中间的

58、“更改所选内容”,把它的名字“ xx” 一下,或者再给它 添一个图标,怎么样,帅吧?!酷吧?! (图 5-4)2l2<J修订合并文裆迎 保护文档 联机协作®邮件合并迅一旦信封和标签(1).中文信封向导电)英文信函向导辺工具栏型 命令©选项匹类别©控件工具箱 所有命令自动閨文集 祥式 内置菜单 新菜单选它和它|品Fro j小模曲我的擢_|XI所选命令:模楼和抑蠡项抵) 自定义© 选项©一更改所选內容迎二J要注嶽它创保存于:匡档i榕式 工具 表格® 窗口迥 帮助 自动滚动®“reject.糧甌去的辎於黠自定史HO I I

59、121 I 14 I I 1G I I 1B五号-B Z U - A| jfi工具栏匹I命箸重新设匿血 删除命名追):Froj m.模块1一我的?复制按讯團标C) 粘贴按钮图标电) 复位按钮图标 蝙辑按钮團标Q 更改羟讯團标更)3 30 I32 |134 I I 36 I I 3SW辭器箱T蘇澤文字默认样式也)在菜单中只用文字) 團标与文字®我她:;:,:;: d|所选命令:说明WORD-VBA编程-从零开始学VBAWord图边 插A(X)格式功工具E 表格 窗口 帮助QD自动滚动 鸟简尊芷电谭哼和语號ft语呂U字数頸计>10 I I 112苕自动舖写摘要an.自动更正WORD-VBA 编程 -从零开始学 VBA5、从此之后,xx和公主就在您的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论