版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
...wd......wd......wd...从零开场,步入Word宏编程的世界〔第一讲〕
工作中,经常看到许多朋友在使用Office时已经非常地熟练,但仍不敢去接触Office的VBA编程;在网上Office的VBA编程论坛中,同样看到有朋友在其中流连了相当长的时间,但仍然不得其门而入。问一下这两类朋友,前者觉得编程是一件很“高深〞的事,自己恐怕学不会;后者为了提高自己的工作效率,虽然很想学,但自己一点编程的根基也没有,照着网上高手们的帖子做,反而越学越糊涂。当我问第二类朋友为什么不多看看VBA的帮助文件时,“看不大懂,就像有语言障碍一样。〞他这样答复我。
对于第一类朋友,我想说,不要被自己想象出来的“困难〞吓倒,如果您没有亲自尝试过,假设何知道编程会很“高深〞,又假设何知道自己学不会而第二类朋友如果能静下心来把根基知识补一补,相信您的问题也会迎刃而解。
那么,就让我们从最根基的知识开场,步入Office宏编程的世界吧。
文前的几点说明:1、虽说本文用到的程序在office2007与office2010中同样可以正常运行,但考虑到目前单位办公用机的实际情况,本文所有的实例主要还是面向Office2003的用户;
2、为了便于各位读者理清思路,防止文章涉及面太广,本文主要以office2003中最常用的Word为主进展讲述,有与其它Office套件相关联的地方,将单独说明;
3、为防止学习过程中的枯燥乏味,本文没有像传统编程教材那样以理论知识为线索展开,而是将不同的知识点放到了几个不同的实例之中进展讲述。所以,把每个实例“做〞一遍,细心体会每个实例的知识点,将有助于您快速掌握VBA的编程技术;单纯地“看〞,则无助于您的学习。
本文的宗旨是——完全面向初学者!或许您还能以此为契机叩开奔向VB6.0或VB.NET的大门,说不定您还能编出一、两个病毒玩玩儿〔当然仅限于玩玩儿,千万别做出什么傻事来!〕!
好了,下面就开场我们Word的VBA编程之旅吧,愿您旅途愉快!实例一:“你好,世界!〞
知识点:
1、熟悉VBE的编程界面;
2、什么是VB、VBE、VBA;
3、什么是过程、工程。不要以为这些知识点有多难,让我们一步一步地来。启动Word,指向工具——宏——VB编辑器,翻开VB编辑器的界面,如图1-1。
“VB编辑器〞就是VBE,VBE是VisualBasicEditing的缩写。我们在VBE编程环境中所使用的编程语言就是“VBA〞,即VisualBasicforApplications的缩写,VBA语言是我们所熟知的VB编程语言的一个子集。
VBE编辑器界面的菜单栏与工具栏就不必说了。界面左面中间部份是“工程资源管理器〞所在的“工程资源管理区〞,每一篇Word文档中所编写的程序,Word都把它看成为一个“工程〞,“工程资源管理器〞就是对这些工程进展管理的地方;界面左下方是“对像属性设置区〞,我们可以对自己要用到的对像的属性进展设置,第四个实例中,我们将对“属性设置〞进展详细讲解,现在大家不必管它;界面右面大面积空白的区域是“代码编辑区〞,我们编写的所有代码都放在这儿。如果看不到这个空白区域,则翻开“插入〞菜单,插入一个“模块〞就行了。如果“工程资源管理器〞已有“模块〞,则双击模块名,就能翻开“代码编辑区〞。
好,现在我们就在这个VBE环境下,利用VBA语言,来编写我们的第一个工程〔即程序〕。
请在“代码编辑区〞中输入如下的代码:subA()msgbox(“你好,世界!〞)endsub注意,代码“msgbox("你好,世界!!")〞一句中的引号与括号为英文标点。点击工具栏上的黑色三角形的“播放键〞,或按下F5键运行这个程序,您将看到一个弹出的消息框。如图1-2。代码讲解:
sub是VB编程中申明一个过程的语句,subA()申明了一个名叫A的过程,A后面跟了一个括号,它的作用现在大家暂时不用管它。整段程序结尾的endsub语句,表示过程“A〞在此完毕。每一个程序都必需有开场与完毕的标志,所以,从SubA()到Endsub就构成了一个完整的“过程〞。Msgbox是一个函数,它的作用是弹出一个消息框来,它后面括号中的内容就是要在弹出的消息框中显示的内容。该函数在我们的第二个实例中,将做详细讲解。本实例的知识扩展:
1、翻开Word,指向工具——宏,再点击“宏〞按钮,翻开“宏名〞对话框。这时,我们就可以看到刚刚我们编写的名叫“A〞的宏。选中“A〞,点击“运行〞按钮,就能运行该宏。
2、同上操作顺序,翻开“宏名〞对话框,在“宏名〞中新输入一个名字“B〞〔注意没有引号〕,再点击“创立〞按钮,这时就会翻开VBE编辑器,并已为我们生成了一个名为“B〞的空过程。该过程中的绿色文字,就是这个宏的注释。〔如果我们要对自己所编写的代码进展注释,可在注释语句的前面加上一个英文状态下的撇号,该注释的语言是不会被程序运行的。〕用这个方法创立过程,可以防止手工输入时疏忽掉程序结尾的Endsub。
好了,实例一到此完毕,回忆一下课前的知识点,都掌握了吗如果觉得没有问题了,就准备进入我们的第二个实例吧。从零开场,步入Word宏编程的世界〔第二讲〕实例二:根本的对话框函数
知识点:
1、认识消息框函数MxgBox与输入框函数InputBox;2、什么是常量、什么是变量、申明变量的方法是什么;3、用“&〞符号连接字符串。想想我们平时与他人谈话时的形式——你提问,他答复;或是他提问,你答复。我们所编写的程序,在与计算机进展交互的过程中,其形式也是这样的一问一答。所以,几乎所有的编程语言都提供有直接与计算机进展对话的函数,在VBA中,这样的最根本的函数是消息函数“MsgBox〞与输入框函数“InputBox〞。
请输入以下代码并运行:
’’’======还有待完善的程序一=====
subB()DimXX=inputbox("您的姓名是:")。Msgbox("欢迎您"&X&"朋友!")EndSub注意:1、在输入“Msgbox("欢迎您"&X&"朋友!")〞这行代码时,括号内几个字符串之间有空格,没有输入空格的话会出错,出错时,代码将以红色显示。2、本程序运行时如果点“取消〞按钮,其实会出现问题,关于对这个问题的解决方法,将在后面讨论。所以,我们先称本程序为“还有待完善的程序〞。〔朋友们可以先试一下,看看会出现什么问题〕。运行效果如图2-1与图2-2。看到了吗这就是最简单的与计算机进展对话的效果。代码讲解:从SubB()到Endsub就是一个完整的过程——“B〞。“InputBox("您的姓名是:")〞这句代码是显示一个“输入框〞,请您输入自己的姓名。这句代码事实上就是一个计算机提问,人答复的“对话〞过程。其中,“InputBox〞函数的作用就是弹出一个输入框,等待我们答复计算机的提问。
当然,我们在答复计算机时,可能填的是“老王〞也可能填的是“老李〞……,这个答案本身是不固定的,所以,我们将这个答案的值赋予“变量〞——“X〞。这下,大家可能就知道“变量〞的含意了吧在程序运行中,我们经常会遇到值不能确定,或者是可能会发生改变的某个数据,在这个时候,我们就用一个“符号〞来“代替〞这个可能会变化的值,这个用来代替不能确定的值的“符号〞,就是“变量〞。
现在,我们删去本程序中的“DimX〞这句后,再运行一下试试效果。假设何样,是不是感觉不到区别〔如果程序报错说“没有申明变量〞的话,没有关系,请接着看下面的内容。〕在VBA语言中允许我们不申明变量就直接运用它,所以程序仍然能够正常运行。“DimX〞这句代码中的“Dim〞就是申明变量的函数,“DimX〞就是申明了一个名叫“X〞的变量。在“X=inputbox("您的姓名是:")〞这句代码中,我们利用等号,将输入框中取得的值赋予给了变量“X〞。虽说我们不申明变量就可以使用它,但这绝对不是个好的习惯。首先,在一些代码较长的程序中,您能保证那些名字较长的变量在后面用到时,您不会输错吗其次,自己不申明变量,时间久了,那些较长的程序可能会连您自己也看不懂;另外,程序在访问申明过的变量时,速度会比访问没有申明过的变量要快一些。
为了防止我们使用变量时出错,我们可以在VBE编辑器菜单的工具——选项——编辑器选项卡上,选中“要求申明变量〞〔见下面图2-3、2-4〕,这样VBE会自动在我们每一个工程的前面加上一句“OptionExplicit〞,这句代码将检查我们所要使用的变量是否申明,没有申明的话就会中止程序的运行。做了上述的操作后,我们再运行去掉“Dim
X〞语句的过程,程序就会报“没有申明变量〞的错误。关于变量,还有一些其它的知识,我们将在实例三中进展更深一步的学习,现在就到这吧。“Msgbox("欢迎您"&X&"朋友!")〞这句中的“msgBox〞函数,大家已不陌生,它的作用就是弹出一个消息框来〔在本程序中,这个消息框就是计算机对我们输入姓名后的答复。〕。在这个消息框所显示的文字中包含了三个局部。字符串“欢迎您〞、字符串“朋友!〞和变量“X〞所可能对应的字符串“老王、老李……〞等。在VBA语言中,我们使用“&〞符号来连接字符串,所以我们在程序运行最后,看到的是一个像图2-2那样完整的欢迎语句。VBA语言中,在使用“&〞连接符号时,请一定注意字符串与字符串之间有一个空格,否则程序一定会出错。由于MsgBox函数与InputBox函数是两个非常常用的对话函数,所以,我们再对它进展更深一步的学习。使用MsgBox函数时的标准格式:
变量=MsgBox〔〞要显示在这儿的语句〞,按钮的参数,〞消息框的题目〞〕
例子:Y=MsgBox〔〞欢迎您〞&X&〞朋友!!〞,0,〞这里是欢迎对话框〞〕请注意格式中英文状态下的引号、逗号与空格的使用。使用InputBox函数时的标准格式:变量=InputBox(“要显示的提示文本〞,〞输入框的题目〞,〞输入框中默认显示的语句〞)
例子:X=InputBox(“请输入您的姓名〞,〞这里是输入对话框〞,〞您的姓名请输入到这儿。〞)。
根据上面的格式,请修改本实例的程序代码为:
’’’======还有待完善的程序二=====
SubB()DimXDimYX=inputbox("您的姓名是:",〞姓名输入框〞,〞您的姓名请输入到这儿。〞)Y=Msgbox("欢迎您"&X&"朋友!",0,〞这里是欢迎对话框.〞)EndSub
本段程序应该很容易读懂吧运行一下,看看与前面程序的区别在什么地方再分别把MsgBox函数的参数0替换为0、1、2、3、4、5这几个参数并运行,看看又有什么不同假设何样,对话框中给出的提示是不是更丰富下面的图2-5与图2-6是MsgBox函数的参数为“5〞时的运行效果。〔请与前面的图2-1与图2-2比照一下,看看到底哪些地方有了变化〕。
程序写到这么详细,您是否已经觉得它已经很完善了呢那么,在当程序要求您输入您的姓名时,如果您选择了“取消〞,会有什么现象呢对,“取消〞按钮同样会向程序返回一个值。为了使用函数时更灵活一些,VBA将这些返回的值“固定〞为以下的数值,这些在程序中被固定的值,就是“常数〞。MsgBox函数的常数如下:
“确定〞按钮被单击时,返回“1〞;“取消〞按钮被单击时,返回“2〞;“终止〞按钮被单击时,返回“3〞;“重试〞按钮被单击时,返回“4〞;“忽略〞按钮被单击时,返回“5〞;“是〞按钮被单击时,返回“6〞;“否〞按钮被单击时,返回“7〞。InputBox函数在使用过程中,当人们输入了值的时候,选择“确定〞或按下回车键,则返回输入框中的内容,输入框中的内容显示不是“固定〞的,也就是说它不是常数;但是,如果人们在要求输入之时选择的是“取消〞按钮,则会返回一个值,这个值是“空值〞,注意“空值〞并不是“零〞。所以,InputBox函数只有一个常数——“空〞。
下面,我们用:如果〔If〕、那么〔Then〕、否则〔else〕、完毕〔endif〕判断语句来完善我们今天的实例。关于“If〞判断语句,不是本实例的学习重点,下节课我们将会详细介绍它。代码中必要的地方已添加了注释〔还记得为代码添加注释的方法吗〕。
’’=============完善后的B程序===============
SubB()DimXDimYX=InputBox("您的姓名是:","姓名输入框","您的姓名请输入到这儿。")IfX<>""Then’如果X的值不为“空〞,那么Y=MsgBox("欢迎您"&X&"朋友!",0,"这里是欢迎对话框.")Else’否则〔即,X的值为“空〞〕EndIf’完毕EndSub
代码“IfX<>""Then〞中的“<>〞是大于与小于符号,表示“不等于〞的意思。
分别运行本程序与最前面的程序,并选择“取消〞,比照一下运行的效果,从完善后的程序中——想必您不难看出“常数〞在程序中的作用了吧
请再多体会体会这本实例中的这几个例子,您对MsgBox与InputBox这两个函数的熟悉程度,将直接影响您后面的学习。加点油吧。本实例的知识扩展:
1、请将本课中学到的MsgBox函数的参数分别运用到实例一中,看看效果假设何。
2、请思考:哪些情况下,会使用到MsgBox函数的不同返回的值好了,实例二到此完毕,请再回忆一遍本实例的知识点,您都掌握了吗是不是觉得VBA并不像想象中那么困难如果您确信已完全掌握了前面这两课的内容,那么,准备承受实例三的挑战吧!从零开场,步入Word宏编程的世界〔第三讲〕实例三:“猜数游戏〞知识点:1、学习变量的类型与转换;
2、掌握程序的循环与判断;
3、学习随机数的生成。通过对前面两个实例的学习,相信您对自己掌握VBA编程已充满了信心。今天,我们将编写一个小小的游戏程序。这个游戏程序中既包含了新的知识点,又要考验您对前两课知识运用的熟练程度,就让我们静下心来抑制这个小难关吧。
游戏内容是这样的:电脑生成一个0到99之间的整数,请您来猜这个数是多少,每猜一次,电脑都给您一个提示,直到您猜中为止。
程序思路:
1、电脑首先生成一个0到99之间的整数;
2、请您输入您所猜的数;
3、把您输入的数与电脑所生成的数进展比照,并给出“您猜大了〞或“您猜小了〞的提示;
4、如果您猜对了,则退出程序;如果您没有猜对,则循环回第二步重复运行,让您再次输入自己所猜的数。
请看代码,必要的地方已添加了注释。程序中退格与对齐是为了便于理解。请您先试着自己把代码读一读,看看能不能读懂。〕’’=========程序名“您猜〞=========
Sub您猜()
Dima,b,c,d’申明了四个变量,变量间用英文逗号分开,与前面实例二申明变量的写法不同,结果一样。
a=0’这个变量用于计算您猜了多少次。
Randomize’准备生成一个随机的数字,先初始化随机数生成器。
b=Int(100*Rnd)’生成一个百以内的随机数,“Rnd〞就是“随机数生成函数〞。
Do’开场循环
a=a+1’您猜的次数增添一次。当再次循环到这儿时,次数会继续往上加。
c=InputBox("请输入您所猜的数")’将取得的值赋予变量“c〞,“c〞是字符串!
d=CInt(c)’将变量“c〞转化为整数,再将值赋给“d〞。
Ifb<dThen’进展比照,如果猜大了。
MsgBox("您猜的数大了")’显示比照的结果。
ElseIfb>dThen’进展比照,如果猜小了。
MsgBox("您猜的数小了")’显示比照的结果。
Else:b=d’进展比照,如果猜对了。
MsgBox("哈哈,您猜对了!")’显示比照的结果。
ExitDo’既然已经猜对了,就跳出循环。
EndIf’完毕比照。
Loop’回到前面的Do,继续循环。
MsgBox("您猜了"&a&"次!")’弹出消息框,并使用了字符串连接。
EndSub’完毕程序。运行本程序,看看效果。并根据注释,体会循环与判断在本程序中的作用。代码讲解:
a这个变量,用于计算您所猜的次数。每多猜一次,它就在自身的根基上加1,其相应的代码是:a=0与a=a+1两句。程序结尾时,将在消息框中显示“a〞的值。
b这个变量,用于记录一个随机生成的数字。其相应代码为:Randomize与b=Int(100*Rnd)这两句。其中,Randomize这个语句在本程序中非常重要,如果您去掉这个函数,再多运行本程序几次的话,您就会发现猜测的答案居然是有规律的!!换句话说,只要我知道了电脑所出数字的规律我就可以“百发百中〞地一次猜中这个数!所谓“随机数〞顾名思义就应该是“随机〞产生的数,在没有Randomize语句的情况下,这些产生的数看似很“随机〞,其实有规律,这种随机数就是“伪〞随机数。所以,Randomize语句的作用就是生成“真正〞的随机数。
Rnd函数是生成一个介于0与1之间的小数,乘以100是让这个小数成为一个介于0到100之间的数;Int函数的作用是将一个数的小数局部去掉,只保存它的整数局部,即“取整〞。通过这样一个可能大家觉得有点复杂的过程,我们得到了一个0到99之间的整数〔大于99而小于100的小数在取整后即是99,所以前面我们说“乘以100是为了生成一个介于0到100之间的数〞,而真正取整之后最大的数只能是99。〕,并将它的值赋予了变量“b〞。
生成随机数,是很多程序中要用到的功能〔特别是游戏,比方游戏中随机生成不同的怪物或不同的宝物等。〕,上面的内容希望大家能悉心地体会。
c这个变量,是取得输入框中我们所猜测的数字。其相应代码是“c=InputBox("请输入您所猜的数")〞,但计算机并不认为我们所输入的是一个数字〔整数〕,它把我们输入的内容看成是文字〔字符串〕。显然,文字是没有方法去与数字比照大小的,所以,我们要用到变量d。
d这个变量,是一个整数。它是利用了“转换函数〞——“CInt〞,将我们所取得的字符串变量“c〞转换成了一个整数。其相应代码是“d=CInt(c)〞。也就是说,本程序中最终进展比照的,是两个整数“b〞与“d〞。这里涉及到VBA数据类型的知识。对于VBA的数据类型,这里主要为大家介绍两种:
Integer——包含-32,768到32,767之间的整数。该类型的数值根本上可以满足我们通常使用整数时的需要;
String——包含变长字符串,最大长度可为20亿个字符。该类型的值其实就是我们常用的字符串。
我们在程序当中用的CInt函数,就是将一个String类型〔字符〕的值,转换成了一个Integer类型〔整数〕的值。所以我们称CInt函数为“转换函数〞。
与CInt类似的常用转换函数还有:Clin、CSng、CStr等。可以把VBA帮助文件中的“转换函数〞与“数据类型〞相互参照进展学习。(相信这个时候您看帮助文件中的这局部内容,将不会再是一件难事。)感觉到困难了吗如果感觉到了困难,就请将上面的内容再体会体会。准备进入下一个知识点。
程序中的DO、ExitDo以及Loop为一个整体。其中,Do是开场进入循环;Loop是指回到Do语句处,再次进展循环;ExitDo是指当符合某一个条件时就直接退出循环。在本程序中,Exit
Do是指当猜中了〔即b=d〕时,退出循环;而无论是猜大了〔b>d〕,还是猜小了〔b程序中数字的比照,是利用If语句来实现的。在实例二中,我们已接触过If语句,If语句的根本格式是:If〔条件〕Then(结果)EndIf’〔完毕If判断语句〕
在If语句判断的过程当中,还可以有子判断语句:Elseifthen。
对于一个具有多重判断的语句,我们大致可以这样理解:如果〔If〕,那么〔Then〕,否则(Elseif),那么〔Then〕,再否则(Elseif),那么〔Then〕……〔ElseIf根据情况可以套嵌很多层〕最终(Else),完毕判断〔EndIf〕。本实例的知识扩展:
1、试一试自己在程序结尾处再添几句,判断所猜的次数:如果小于六次,给出一个评价“优〞;等于六次,给出一个评价“良〞;大于六次,给出一个评价“您还需努力!〞。
2、试一试给程序补充局部内容,其功能为:在猜完一次后,询问游戏人“您还愿意再玩一次吗〞,并根据游戏者的响应,再次运行程序或退出程序。
3、如果在刚开场游戏让我们输入数字时,我们选择了“取消〞就会出错,您现在能利用自己已有的知识来解决这个问题吗好了,到这里,我们再回过头来看一看这个程序,理解起来还有困难吗本实例可能比前两个实例稍难一点。如果您能顺利完成知识扩展中的问题题,那么祝贺您,您已过了入门的第一个小难关,可以进入下一步的实例四了,如果您还存在疑问,则再请多动手把前三个实例练一练!!附:完善的猜数游戏——
Sub您猜()
Dima,b,c,d,e,f
e=6’该数字用于计算所猜次数是否为优、良等
Do
a=0
Randomize
b=Int(100*Rnd)
Do
a=a+1
c=InputBox("请输入您所猜的数")
d=CInt(c)
Ifb<dThen
MsgBox("您猜的数大了")
ElseIfb>dThen
MsgBox("您猜的数小了")
Else:b=d
MsgBox("哈哈,您猜对了!")
ExitDo
EndIf
Loop
MsgBox("您猜了"&a&"次!")
Ifa>e
MsgBox("您还需努力!")
ElseifaMsgBox("您的猜数能力:优!")
Elsea=e
MsgBox("您的猜数能力:良!")
Endif
f=MsgBox("您还愿意继续玩吗",4,〞继续游戏〞)’’注意此处常数的使用
iff=7then’’注意此处消息框返回值的使用
exitdo
else
endif
loop
EndSub从零开场,步入Word宏编程的世界〔第四讲〕实例四:窗体与根本的控件
知识点:1、窗体与控件的使用;
2、什么是“设计时〞、什么是“运行时〞;
3、了解什么是对像、属性、方法和事件。扎实的根基知识是我们顺利掌握VBA编程语言的先决条件。说到根基知识,我想告诉朋友们——我们必须建设起“面向对像〞的编程思想。“面向对像〞进展编程的思想实在是太重要了!我们所接触的所有事物都是对像,都有属性,也都有属性值。如果您不相信那么请看——
您假设何来描述自己家里的电视机呢它的身高体重住址年龄颜色频道个数声道个数音量大小屏幕大小分辨率刷新率……对,这些都是电视机的“属性〞,在这里,“电视机〞就是一个“对像〞。
以下,假设我们生活在“VBA编程语言〞当中,生活中的事物就是VBA的对像——那么,我们假设何来找出一个“对像〞的属性,或是怎能样来对“对像〞的属性进展赋值呢看下面的程序:‘========程序名“您想看几频道〞========
Sub您想看几频道〔〕
DimX
X=InputBox〔“请输入您想看的频道的值:〞〕
电视机.频道=
X
EndSub
运行这代码,输入您想看的频道的值,比方“10〞或是“36〞,那么,您就会看到10频道或是36频道的节目。这里,“电视机〞是对像,“频道〞是它的属性,“10或36〞是它的属性值。在“对像〞引用自己的某个“属性〞时,我们在它们之间用一个小圆点〔英文的句号〕来表示,具体的格式如代码“电视机.频道=
X〞中所示;设置值的时候,用等号来赋予它。
说到赋值,您是不是想执行“电视机.屏幕尺寸=100吋〞命令呢呵呵,有些事物的属性值是“只读〞的,不能修改,比方电视机的重量等。现在,我正在看一个节目,但我不知道这个节目所在的是几频道,假设何办呢请看程序——‘========程序名“当前频道是多少〞========
Sub
频道是多少〔〕
Dim
频道的值
频道的值=电视机.当前频道
MsgBox
〔“频道的值〞〕
End
Sub
程序不难懂吧
前一个程序“您想看几频道〞中,我们是将“值〞赋予对像的属性,后一个“频道是多少〞程序中,我们是取得对像属性的“值〞。这两种类型的程序在使用时刚好相反,但,它们在VBA编程语言中的运用几乎可以说是无处不在!!请一定要认真体会这两个程序中关于“对像〞、“属性〞与“值〞之间的关系!!
那么,什么又是事件和方法呢对于电视机来说,当它的电源接通时就发生了“电源接通事件〞,反之,它的电源断掉时就发生了“电源断掉事件〞。方法,则是指人对电视机进展的操作,比方,现在显示的是10频道,我在电视机的频道调节按钮上,向前按了5次,则进入了15频道。电视机支持使用“频道按钮〞进展“频道调节〞的动作,就可以说成是它支持“用按钮调整频道〞的“方法〞,“5〞就是这个方法的参数〔只要是您家里电视机所支持的值,当然都可以作为它的参数。〕。
那位朋友说了“喂,大哥,我们可是在学习Office的VBA编程语言啊!假设何扯到电视机上去了!〞好吧,我们来谈Office。Office是一个对像,Word是一个对像,窗口是一个对像,文档是一个对像,段落、标题、一行文字、一个字符、一个标点、一个表格、一个单元格……无一不是对像!它们都有颜色、大小、宽窄、数量、位置……等等属性。我们利用VBA语言进展编程,不外乎就是为了控制某个对像的某个属性值以方便我们的工作罢了!
对于对像、属性、方法、事件,我们先了解这么多,在实例六我们将继续对其进展学习。今天,我们先试试这些知识在窗体与控件上的运用吧!一、界面制作
1、翻开VBE,指向“插入〞菜单,点击“插入用户窗体〞命令〔也可以在工具栏中做同样的动作。〕,窗体的名称默认为“UserForm1〞,如图4—1。
2、点击控件工具箱按钮,翻开控件工具箱,选中工具箱中的“按钮〞控件,在窗体上“画〞出一个按钮控件〔“按钮控件〞就是控件工具箱中的那个方形的小块。〕,按钮的名称默认为“CommandButton1〞。二、属性赋值方法之一:注意,下面进入今天的关键知识点:
1、首先,双击做好的窗体或按钮,就会翻开代码窗口。保证光标在窗体或按钮代码的正中间,按下F5键运行它,或在“运行〞菜单中选择“运行用户窗体或子过程〞命令运行它,看看效果。如图4-2左面。这里需要注意两点:A、如果光标不在代码中间,而您的模块中又还存在其它的代码的话,运行时,VBE会让您选择要运行的宏名称;B、如果工程被锁定而不能运行的话,首先请在“工具——宏——安全性〞对话框中把安全性设为“低〞,然后删除VBE中所有存在的代码,并关闭Word,等一下再重新启动,重新开场本步的操作。当然,如果您VBE中以前的代码需要保存的话,最好把它剪切到其它文本中去,要用时再复制过来。最后,千万记得在本实例完成之后,把“安全性〞改回为高,以防止宏病毒。
2、右击按钮CommandButton1,选“属性〞,〔如果“属性〞对话框本来就的翻开的,则选中按钮CommandButton1,然后直接修改属性就行了。〕在“属性〞对话框中选“Caption〞,在右面的属性值中输入“开场运行〞。保存后,再次运行,看看与第1步运行时相比,效果有什么不同对,按钮上面的提示文字已经改变成“开场运行〞了。比照效果如图4-2。
以上这两个步骤中,需要我们应该掌握的知识就是“假设何在属性对话框中,对控件的属性进展赋值〞。下面,我们还要为控件的属性赋值,但赋值的方法有所不同,请注意体会以下赋值方法与上面的区别。三、属性赋值方法之二请撤消前面添加“开场运行〞属性的操作,回到按钮外表提示文字仍然是“CommandButton1〞时的状态,双击“CommandButton1〞将翻开“CommandButton1〞的代码窗口,代码窗口已为我们生成了控件被单击时的空过程。现在,我们就在这个“CommandButton1〞的Click事件〔即按钮被单击的事件〕空过程中,添加如下的代码:’’’========用代码修改属性========
PrivateSubCommandButton1_Click()
CommandButton1.Caption="开场运行"
EndSub本实例之初,我们学习了为对像的属性赋值的格式,那么,您看到代码“CommandButton1.Caption="开场运行"〞时,应该不难理解吧代码中的CommandButton1是指窗体上的那个按钮,如果有多个按钮的话,就会分别被命名为CommandButton2、CommandButton3……等等。如果要解释上面的程序,就应该是:当按钮被“Click〞〔单击〕时,按钮的“Caption〞〔提示文字〕就被改变为“开场运行〞。
运行本程序并单击按钮看看出现了什么效果在按钮被单击前,运行的效果与第1步一样〔与图4-2左面一样。〕;当按钮被单后,是不是与第2步运行时的情况一样〔与图4-2右面一样。〕
第2步中,我们是“先设计好了〞按钮的提示文字再运行;第3步中,我们根本没有“设计〞按钮的提示文字,而是已经“在窗体运行的时候〞利用了按钮的单击事件,改变了按钮外表的提示文字。对于第2步中的做法,我们称之为“设计时〞修改控件,对于第三步中的做法,我们称之为“运行时〞修改控件。“设计时〞修改控件的属性虽然更方便、更容量掌握,但它往往没有“运行时〞修改控件属性那么灵活。下面我们再做一个例子,动态改变按钮与窗体的属性值。再体会体会“运行时〞修改属性值的灵活性。将前面的代码修改如下:‘==========利用单击按钮事件,动态改变按钮名与窗体颜色===========
PrivateSubCommandButton1_Click()
IfCommandButton1.Caption="CommandButton1"Then
CommandButton1.Caption="开场运行"
ElseIfCommandButton1.Caption="开场运行"Then
CommandButton1.Caption="点我干嘛,别烦我!"
ElseIfCommandButton1.Caption="点我干嘛,别烦我!"Then
UserForm1.BackColor=RGB(255,128,128)
CommandButton1.Caption="想让我给你点颜色吗"
ElseIfCommandButton1.Caption="想让我给你点颜色吗"Then
UserForm1.BackColor=RGB(0,128,64)
CommandButton1.Caption="你真的不怕我变脸吗"
ElseIfCommandButton1.Caption="你真的不怕我变脸吗"Then
UserForm1.BackColor=RGB(128,0,255)
CommandButton1.Caption="怕了你了,我逃!"
Else:CommandButton1.Caption="怕了你了,我逃!"
UnloadUserForm1’“Unload〞是窗体的一个方法,其作用是卸载窗体。
EndIf
EndSub
本程序中用到了窗体的颜色属性〔BackColor〕及其属性值〔RGB〕的知识,我们在利用VBA对Word中的文字进展修饰时,经常会用到颜色属性及其值的设置,这里正好学习一下。代码最后的“Unload〞是窗体的一个方法,其作用是卸载窗体,与平时我们关闭窗体时按右上角最大、最小化按钮那里的“X〞按钮等价。有卸载就有加载,加载并显示窗体的命令是“Show〞,该命令的使用格式是“窗体名.Show〞。本实例的知识扩展:
1、朋友们在“设计时〞属性设置中,下点功夫摸索摸索,尽快熟悉窗体、按钮的各种属性;
2、本例只用到了“控件工具箱〞中的按钮控件,其它的控件虽然在作用上各不一样,但在使用的方法上与按钮控件没有什么大的区别,朋友们就自己尝试一下其它的控件吧;
3、请您制作一个窗体,上面加上两个按钮,一个按钮运行实例三中的游戏,另一个按钮退出游戏。实例四到此完毕,假设何样,有收获吗下一个实例“Word版的媒体播放器〞,将是我们前面知识的一个集中练习,也将是一个会让您很有“成就感〞的练习。还等得及吗——从零开场,步入Word宏编程的世界〔第五讲〕实例五:Word版的“媒体播放器〞
知识点:1、进一步熟悉VBE的操作界面;
2、学习使用窗体与控件进展编程;
3、学习运用附加的控件进展编程。
通过以上四个实例的学习,今天,我们终于迎来了冲动人心的时刻——编写一个“Word版的媒体播放器〞!“媒体播放器〞大家不会陌生吧对,就是开场——程序——附件——娱乐中的“Mediaplayer播放器〞!相信本实例会给您带来成就感!也算是对我们前四个实例辛苦学习的一点点回报吧!当然,在快乐之余,千万不要忘了对本实例中知识点的学习。其实,本实例中,理论知识上的难度几乎没有,但操作上的步骤却相当多,朋友们耐心一点。步骤一:界面的制作
1、回忆实例四中的操作方法,在VBE中添加一个窗体,窗体上添加两个按钮。将窗体的“Caption〞属性改为“Word版媒体播放器〞,再分别将两个按钮的“Caption〞属性改为“开场运行〞与“完毕程序〞。
2、右击控件工具箱,选“附加控件〞,将“附加控件〞面板的滚动条拖动到最底端,然后选中“WindowsMediaplayer〞控件。“确定〞后,退出“附加控件〞面板〔图5-1〕。这时控件工具箱最下面就多出了一个网格状的“WindowsMediaplayer〞控件。3、选中“WindowsMediaplayer〞控件,在窗体上按您的需要和喜好“画〞出它将要显示的范围。
4、现在,我们就可以利用“属性对话框〞开场对整个窗体及窗体上所有的控件进展“美化〞。“美化〞的内容就按您自己的喜好看着办好了,反正是“设计时〞修改控件,不会影响最终程序的运行。我修改了窗体和按钮的颜色,并修改了按钮上的字体以及字号和字色。最终的效果如图5-2。准备工作已就绪,开场编写代码了吧!步骤二:编写代码1、双击“开场运行〞按钮,在VBE自动生成的空过程中输入如下代码:PrivateSubCommandButton1_Click()
MediaPlayer1.FileName="D:\MyMpg\龙珠2.mpg"
EndSub
(注意:office2003及以上版本,上句代码应该是:WindowsMediaPlayer1.URL="D:\MyMpg\龙珠2.mpg",这是因为在这些版本上,MediaPlayer控件的属性与方法已略有些变化了。)代码讲解:
关于“过程〞,就不消多说了吧“MediaPlayer1〞就是我们在“设计时〞所添加的“MediaPlayer控件〞。它尾巴上的“1〞,指它是在本窗体上的第一个“MediaPlayer控件〞。“FileName〞是“MediaPlayer1〞的一个属性,这个属性的值就是将要播放的媒体文件的名称〔还记得为属性赋值的格式吗这整句代码可是一个标准的赋值语句。〕。等号后面大家就很清楚了——是要播放的文件的路径与文件名。当然,您的电脑上恐怕不会有“D:\MyMpg\龙珠2.mpg〞文件的,您可要根据自己电脑上的实际情况输入这局部的内容。
2、双击“完毕程序〞按钮,在翻开空过程中输入——
PrivateSubCommandButton2_Click()
UnloadUserForm1
EndSub代码讲解:
这段代码如果还需要讲解的话,就请再看看实例四的后半局部内容。
完成前两步代码输入后,可以将光标定位于“开场运行〞按钮的代码区正中间,然后按下F5键!!看到了什么假设何样,有成就感吧还没完呢!赶快“完毕程序〞编完最后的代码吧!
3、回到Word,指向工具——宏,翻开“宏名〞对话框〔不要告诉我,你找不到这个对话框〕,在“宏名〞中输入“我的播放器〞〔没有引号〕,点击“创立〞按钮,在VBE所生成空过程中输入——Sub我的播放器()
UserForm1.Show
EndSub
本段代码与上段代码一样,也无需讲解了吧
4、回到Word,翻开工具——自定义,拖动“命令〞选项卡的滚动条到最底部,选中“类别〞窗格中的“宏〞,再找到右边“命令〞窗格中的“我的播放器〞宏,左键按住它,不要让它跑掉〔〕,拖动它到“任意〞的“菜单栏〞或“工具栏〞上,好,松左键,它跑不掉了〔图5-3〕。保证它是被选中的,再回到“命令〞选项卡上,点击正中间的“更改所选内容〞,把它的名字“美化〞一下,或者再给它添一个图标,假设何样,帅吧!酷吧!(图5-4)
5、从此之后,王子和公主就在您的Word中……哦错了,应该是——从此以后,您的Word中,就多了一个可以播放Mpg、Mp3……等等媒体的小妞……啊,又错了,是“小钮〞。当然,要播放的内容还得您自己为它指定〔写进代码中去〕。本实例的知识扩展:
1、修改代码来确定媒体文件的路径及文件名不麻烦吗难道您不愿意使用“输入框〞
2、有没有方法指定一个文件夹后,播放器就自动将这个文件夹下的媒体文件一个一个地播放出来呢或者,将要播放的文件名写在一个文本文件中,让播放器一个一个地读出它的名字来播放呢
3、如果要求您不用“设计时〞修改控件属性,而让您用“运行时〞修改控件属性的方法,来制作步骤一中的界面,您不愿意试一试吗
4、都有哪些附加控件各附加控件的作用又都是什么呢本实例至此完毕!VBA好玩吧对我们的实例六,您是否已有所期待了呢从零开场,步入Word宏编程的世界〔第六讲〕实例六:Word中的常用对像、属性、方法和事件知识点:掌握Word中常用的对像并学习这些对像主要的属性、方法和事件。在实例四中,我们已接触了对像、属性、方法和事件的根本概念,今天,我们就来学习一下Word中的常见对像以及它们的属性、方法和事件。本实例的内容稍微多了一些,为了便于朋友们的理解,以下将主要介绍Word中最重要的几个对象、属性、方法与事件。要想得到更详细的内容,朋友们可以在完全掌握本实例后,尝试看看VBA的帮助,在帮助文件中搜索“MicrosoftWord对象〞即可。本实例将重点介绍以下的对象,首先理清我们今天要学习的“对像〞的构造层次——Application对像:即Office中您正在运行的程序本身,如Word或Excel等。Application对像是一个应用程序中的“总对像〞或者说是“顶级对像〞。在Word中,Application对像包含了程序中可能会存在的其它所有对象,比方:所有的Word文档〔Documents〕、程序本身的工具栏与菜单栏〔CommandBars〕、程序的窗口〔Window〕、程序的内置对话框(Dialogs)等等……Documents对像:即所有Word文档的集合。该对像中每一个单独的文档,即是文档对像“Document〞。在Documents对像中,可以通过引用文档名字的方法来操作一个Document对像。Document对像:Document对像又具许多子对像。本实例主要介绍两个——Range对象〔字符串对像,可以是选定的一串字符或者是一个字符〕与Selection对象〔活动区域对像,可以是文档中选中的内容或者仅仅是一个插入点〕;了解Paragraphs〔段落集合对像〕。CommandBars对像:即“命令栏〞对像。它是Application中所有菜单栏与工具栏的集合。我们在编程时,对菜单栏与工具栏的修改,都是通过操作“ComandBars〞对像来实现的。〔由于该对像在VBA编程中特别重要,我们将在实例七中单独对其进展介绍。〕Application对像1、Application对像的Quit方法该方法用于退出应用程序〔Application〕。例如:
’’=========关闭程序的代码=========sub关闭程序()Application.quitEndsub执行本段代码,就会退出正在运行的Office程序〔相应的Application对像,可以是Word、Excel等〕。在实际工作中,Quit方法可以用于提示用户保存所有目前翻开的文档。下面例子中,如果用户单击“是〞按钮,在退出Word前,所有翻开的文档都将以Word格式进展保存。’’========退出时提醒的代码=======Sub退出时提醒保存()DimTishiTishi=MsgBox("您要保存目前所有的文档吗",4,"提示您保存文档")IfTishi=6ThenApplication.QuitSaveChanges:=wdSaveChanges,OriginalFormat:=wdWordDocumentEndIfEndSub代码解释:MsgBox的参数“4〞与返回值“6〞,现在大家不会不明白了吧“4〞表示显示“是、否〞两个按钮,“6〞则表示操作者选择的是“是〞按钮。代码“SaveChanges:=wdSaveChanges〞是指进展“保存〞的操作;“OriginalFormat:=wdWordDocument〞则指定保存的格式为Word的文档格式。关于“Save〞方法,后面我们将会进一步学习。
2、Application对像的ActiveDocument属性
ActiveDocument属性返回一个Document对像〔即当前正在使用的“活动文档〞〕,下例显示当前活动文档的名称:’’’’=========显示活动文档的名称==========Sub显示名称()DimnameANameA=Application.ActiveDMsgbox(NameA)endsub本段代码中用到了Document对像的一个属性Name,该属性返回文档的名称。Documents对像〔一〕、Open方法——用于翻开Documents集合中的单个Document对象Open方法的根本语法格式:Documents对像.Open(可包含路径的文件名)。比方:翻开C盘MyFile文件夹下的MyDoc.doc文档——’’’==========翻开文件==========Sub翻开文件()Documents.Open("C:\MyFiles\MyDoc.doc")EndSub本代码演示了Open方法的根本使用格式。其实,Open方法的可选参数有很多,有的能指定“翻开文档的方式〞为“只读〞,有的能指定“翻开文档时所需的密码〞等,参数的内容可在帮助文件中找到详细介绍。〔二〕Add方法Documents对像的“Add〞方法,可以新建一篇空白文档,比方:’’’==========新建文档==========Sub新建文档()Documents.AddEndsubAdd方法中可以使用以下参数:以何种样本模版为母版新建文档、是否将该新建的文档保存为另一个模版、新建的文档以何种类型保存〔Web页、电子邮件、带框架的文档等〕、新建文档是否显示〔即可以隐藏〕等等。参数的使用可以查找帮助文件。〔三〕Item方法Item方法可以通过ID〔集合中的序号〕或名称返回集合的单个成员,例如:’’’============显示Documents集合中第一篇文档的名字============Sub显示名字()DimMingIfDocuments.Count>=1Then
’’如果集合中文档的个数大于或等于1,那么——Ming=Documents.Item(1).Name’’获得第一个文档的名称MsgBox(Ming)EndIfEndsub本例用到了Documents对像的一个属性“Count〞,该属性的作用是“返回指定集合的中所有工程的个数〞,本实例是返回了“已翻开的所有文档的个数〞。事实上,“Count〞属性不单只是Documents对像的属性,其它的对像如Document、CommandBars等对像都具有这个属性。Document对像〔一〕Close方法本方法用于关闭指定的文档。其根本格式为:“对像.Close〞〔这里之所以写的“对像〞而没有写“Document〞,是因为“Close方法〞其实是很多对像都有的方法,而且在使用时格式都一样〕。下例将关闭并保存活动文档。’’’’=======关闭并保存文档========Sub关闭并保存文档()ActiveDocument.CloseSaveChanges:=wdSaveChangesEndSub〔二〕Range方法Range方法在Document对象中可以通过使用指定的开场和完毕字符位置,返回一个Range对象〔Range对象在下面再做介绍。〕。语句格式如下:对像.Range(Start,End)关键字Start是为了指定Range开场的位置;关键字End是为了指定Range完毕的位置。具体应用请看下面的实例。本实例,将活动文档中的前150个字符设置为青绿色。’’’’=======更改颜色========sub更改颜色()ActiveDocument.Range(Start:=0,End:=150).Font.Color=RGB(0,255,0)EndSub代码中将Font〔字体〕、Color〔字色〕属性值指定为RGB颜色设置的参数。〔三〕Save方法Save方法用于保存指定的文档或模版。其根本格式为:对像.Save〔参数〕。Save方法其实也不仅仅只是Document对像的方法,它同时也是Application与Documents对像的方法。本方法参数中最重要的是“指定保存方式〞的参数——“NoPrompt〞。如果“NoPrompt=True〞,Word将自动保存所有文档并且不提醒用户;如果“NoPrompt=False〞,则当一篇文档在上次存盘后进展了修改时,Word就会提醒用户将文档保存为另一个。下例保存Documents集合中的每一文档〔本例没有举“Document对像〞的例子〕,并且保存文档时不提示用户。Sub保存文档集合()Documents.SaveNoPrompt:=True,OriginalFormat:=wdOriginalDocumentFormatEndsub〔四〕SaveAs方法该方法主要的作用是“用新的文件名或新的格式〔非*.doc格式〕〞来保存指定文档。本方法对应“文件〞菜单中的“另存为〞对话框。其语法及主要参数为:Document对像.SaveAs(“文件名FileName〞,“准备保存的格式FileFormat〞,“翻开文档时的密码Password〞。参数FileFormat的常量可在帮助文档中找到。下面的代码,将活动文档存为RTF格式〔即“写字版〞文档的格式〕,并将文件名改为“Text〞。’’’’==========另存文档============Sub另存为格式()ActiveDocument.SaveAsFileName:="Text",FileFormat:=wdFormatRTFEndsubRange对像即字符串对像,Range对像的方法非常之多,以下主要介绍常用的Copy方法与Paste方法。Copy方法的作用是将所选内容复制到系统剪贴板,Paste方法是将剪贴板中的内容粘贴到目标位置。本例复制活动文档的第一段,并将该段落粘贴到文档的末尾。’’’’’’============复制与粘贴例============Sub复制与粘贴例〔〕DimmyRangeActiveDocument.Paragraphs(1).Range.CopySetmyRange=ActiveDocument.Range(Start:=ActiveDocument.Content.End–1,End:=ActiveDocument.Content.End-1)myRange.PasteEndsub本例代码较长,重点的地方解释如下:“Paragraphs〞是Document对像的一个子对像,即“段落〞对像,其后跟的参数“1〞,表示引用文档的第一段。(“Paragraphs〞对像也是“Document对像〞中一个重要的子对像,本文本拟介绍,但考虑到内容的长短,故省略。本对像的内容请参考帮助文件。)“Set〞语句是一个赋值语句,与我们前面学习的“Dim〞相关联,“Dim〞的作用是申明一个变量,而“Set〞语句是将“对一个对像的引用〞赋给一个变量。本例中其实是为了找出文章完毕的“点〞,而将“能够找出该点的语句〞赋给了变量myRange。“Content〞是“Document对像〞的一个属性,它返回Document对像的所有文字。本段代码中运用“End〞关键字,来找出文字的结尾处,并用“End—1〞将结尾向后移动了一位。代码如果在一行中写不下,可以用一个下划线“_〞来连接前后的代码,本例中“Set〞这句较长,可以使用这个连接符。Selection对像即活动区域对像,Selection对像的方法也非常多,以下介绍常用的“InsertFile〞方法,该方法能插入指定文档的全部或局部内容。其语法为:对像.InsertFile(“要插入的文章名FileName〞)FileName参数必须指定,如果没有指定路径,则Word将文档路径设为当前路径。实例:在活动文档中插入另一个文档,文档插入到您当前光标所在的位置〔即“Selection对像〞处〕。’’’======插入文档例======Sub插入文档例〔〕DimMyDocMyDoc=InputBox(“请输入您要插入的文章路径及文章名〞)’’’如果选“取消〞就需要错误调试。Selection.InsertFileFileName:=MyDocEndSub在实际工作中,我们经常需要将一个文件夹下的所有文档合并到一篇文档中来,如果使用Word“插入〞菜单中的“插入文件〞命令,一旦文档数量太多,则会非常麻烦。其实,运用一个变量取得文件的名称,并使用循环语句重复运行本段代码,就会使这项工作变得简单。本实例的知识扩展:请尽量熟悉帮助文件中所有对像的属性、方法与事件。实例六到此完毕,本实例内容较多,愿朋友们通过本实例,既能熟悉这几个重要对像的使用方法,又能以此作为自己熟悉VBA帮助文件的一个台阶。毕竟,本文不可能涉及VBA的方方面面,更多的内容需要大家从“帮助〞中去获得。如果大家能够熟练掌握本实例中的内容,那么,再看帮助文件,将不会再是一件难事。从零开场,步入Word宏编程的世界〔第七讲〕实例七:自定义Word的命令栏知识点:1、菜单栏与工具栏知识根基;2、“运行时〞修改菜单栏与工具栏。Office组件中的每一个程序,都有菜单栏和工具栏,而且任何Office程序中的菜单栏与工具栏在VBA中的对像都是“ComandBar〞对像。所以,本实例可以用于所有Office程序。很多朋友在学习VBA的过程中,感到“自定义命令栏〞这部份内容难以掌握,原因就在于没有弄清“ComandBar〞对像构造的层次性。好了,下面让我们静下心来,开场——一、“ComandBars〞对像与“ComandBar〞对像“ComandBar〞对像就是“命令栏〞对像,在Application〔程序〕中无论是菜单栏还是工具栏,都是一个“ComandBar〞对像。我们在编程时,对菜单栏与工具栏的修改,都是通过操作“ComandBar〞对像来实现的。举一个实例,比方从“文件〞菜单到“帮助〞菜单为止的那个命令栏,按住“文件〞菜单左边有一个竖线的地方,就可以把这个命令栏拖离原位置。这个“命令栏〞就是一个“ComandBar〞对像。现在我们已经知道什么是命令栏“ComandBar〞对像了,那什么是“ComandBars〞对像呢既然尾巴上有字母“s〞,“ComandBars〞对像肯定就是所有命令栏的集合了!〔一〕CommandBars对像的Add方法Add方法,用于创立一个新的命令栏〔这个命令栏既可以是菜单栏,也可以是工具栏。〕。本方法的格式为:对像.Add(“新命令栏的名称Name〞,“新命令栏所在的位置Position〞,“新命令的作用时期Temporary〞)。参数解释:Position参数有六个常数:“msoBarLeft,msoBarTop,msoBarRight,msoBarBottom〞这四个常数指定新命令栏左右和上下的坐标;“msoBarFloating〞说明新命令栏是可移动的;“msoBarPopup〞说明新命令栏是一个快捷菜单。Temporary:如果Temporary=True,则新命令栏会在程序关闭时,同时被删除〔也就是说,该命令栏只是暂时有效〕;如果Temporary=False,则不会被删除〔Office程序默认为False。〕另外,Office组件中的Word与Outlook会忽略此参数,因此在退出Word或Outlook应用程序之前,您必须手工删除所有临时添加到CommandBars集合中的ComandBar对像。以下实例创立了一个名叫“新工具栏〞的命令栏。’’’=========创立一个命令栏===========Sub创立一个命令栏()CommandBars.Add(Name:="新工具栏",Position:=msoBarTop,Temporary:=True).Visible=TrueEndSub代码中的“Visible=True〞表示将创立的工具栏显示出来,如果“Visible=False〞则会创立一个隐藏的工具栏(“Visible〞是很多对像的属性。)。“Position:=msoBarTop〞则表示新建的命令栏居于程序的顶部。如图7-1。〔二〕在CommandBars对像中引用CommandBar对像在CommandBars对像中引用CommandBar对像常用的方法有两种。第一种:我们在针对某一个菜单项进展操作时,可以直接引用这个菜单项的名称来调用它。如:CommandBars("View")对应“视图〞菜单、CommandBars(“Text〞)对应右键弹出菜单等等。请看实例——’’’’=======使视图菜单失效========sub使视图菜单失效()CommandBars("View").Enabled=FalseEndsubEnabled属性是很多对像的属性,它的作用是决定对像在应用程序中的状态。本实例中,如果属性值为True,那么激活指定的命令栏或命令栏控件;如果属性值为False,则该命令栏控件将失效。运行本代码查看效果之后,可将Enabled的值改为True,再次运行,将视图菜单恢复过来。使视图菜单失效的效果如图7-3。第二种:我们在对许多菜单项进展操作时,如果像前例那样一个一个写知名称的话会很麻烦,所以可以使用菜单所对应的ID号来调用它。请看实例——本实例隐藏程序中ID号在前80位的命令栏。’’’’’’’’’’’’===========隐藏命令栏==========Sub隐藏命令栏()Dima,bb=80'定义最后的ID值a=1'定义初始ID值Do'进展循环a=a+1'累加ID值Application.CommandBars(a).Enabled=True
'隐藏ID值对应的命令栏Ifa=bThen'在a=80时,准备退出循环ExitDoElseEndIfLoop'继续循环本程序应该不难理解,其实这个用这个方法隐藏命令栏是很傻的,特别是在不知道哪个命令栏对应哪个ID号的时候,用ForNext循环是更好的选择〔关于“ForNext循环〞的知识可在帮助文件中找到。〕。二、“CommandBarControl〞对象与“CommandBarControls〞对像“CommandBarControl对象〞代表命令栏中的命令按钮,“CommandBarControls集合〞则是单个命令栏中所有命令按钮的集合。用CommandBar对像的“Controls〞属性可返回CommandBarControls集合〞,格式是“命令栏名·Controls属性=该命令栏的CommandBarControls集合〞。“CommandBarControls〞集合对像包含了一个菜单栏或工具栏中所有的命令按钮。根据命令按钮的不同特点,它们又可以具体分为:按钮对像〔CommandBarButton〕,表示命令栏是的一个上的命令按钮。弹出式控件〔CommandBarPopup对象〕,该对像又可以返回一个CommandBar对像。组合框控件〔CommandBarComboBox〕,该对像代表命令栏中的一个组合框。下面的实例,用“CommandBarControls对像〞的Add方法,在菜单栏上添加了一个子菜单。Sub添加子菜单()DimZicaidanSetZicaidan=Application.CommandBars(36).Controls.Add(msoControlPopup,,,,True)Zicaidan.Caption="添加的菜单"EndSub代码中的“Application.CommandBars(36)〞是利用ID号找到“文件〞菜单所在的CommandBar命令栏〔该命令栏所对应的ID值为“36〞,关于假设何找到各命令栏对应的ID号,下文有述。〕;“Caption〞属性,是定义“CommandBarControl〞对像的文字标签。以上实例既然已添加了子菜单,又应该假设何为子菜单添加命令按钮呢以下实例在运行时添加菜单,并为菜单添加两个按钮,一个是“CommandBarButton〞命令按钮;一个是“CommandBarPopup〞弹出式控件,然后又为“CommandBarPopup〞弹出式控件再添加一个按钮。修改上述代码为:Sub添加菜单与子按钮()DimZCDDimZADimZAADimFCDSetZCD=Application.CommandBars(36).Controls.Add(msoControlPopup,,,,True)ZCD.Caption="添加的菜单"SetZA=ZCD.Controls.Add(msoControlButton,1,,,True)ZA.Caption="这是命令按钮"SetZAA=ZCD.Controls.Add(msoControlPopup,1,,,True)ZAA.Caption="这是弹出按钮"SetFCD=ZAA.Controls.Add(msoControlButton,1,,,True)FCD.Caption="分按钮"EndSub运行效果假设何以上我们做的工作就是“运行时〞修改命令栏。那么,假设何为我们所自定义的命令按钮指定运行的命令呢这就要用到按钮的“OnAction〞属性。再次修改上述程序,请注意,这次我们修改后的程序是由两段代码组成的——''''=======程序的主体部份======Sub命令按钮的使用()DimZCDDimZADimZAADimFCDSetZCD=Application.CommandBars(36).Controls.Add(msoControlPopup,,,,True)ZCD.Caption="添加的菜单"SetZA=ZCD.Controls.Add(msoControlButton,1,,,True)ZA.Caption="这是命令按钮"ZA.OnAction="删除菜单"’调用下面的“删除菜单〞过程SetZAA=ZCD.Controls.Add(msoControlPopup,1,,,True)ZAA.Caption="这是弹出按钮"SetFCD=ZAA.Controls.Add(msoControlButton,1,,,True)FCD.Caption="分按钮"FCD.OnAction="删除菜单"’调用下面的“删除菜单〞过程EndSub''''=======下面是要调用的程序======Sub删除菜单()Application.CommandBars(36).Controls("添加的菜单").DeleteEndSub第二段代码中的“Delete〞语句是CommandBarControls对像的一个方法,它的作用就是删除对像。请看图7-1。到此为止,我们就已经学习了关于“运行时〞自定义菜单的根本知识,具体的运用,还要朋友们在实际工作中多多体验。本实例的知识扩展:1、关于代码保存的地方——我们从VBA的“工程资源管理器〞中可以看到,无论您什么时候翻开文档,都会有一个叫“Normal.dot〞的模版存在,它就是Word的全局模版。如果没有必要,我们就应该尽量把代码保存到文档自身当中,而不要保存到Normal模版中。假设何在文档与模版间进展代码的交换呢您可以通过“工具〞——>“宏〞——>“宏名〞——>“管理器〞对话框进展控制。2、当Normal模版中的命令栏被修改之后,有时需要我们将它恢复到程序“原始〞时的状态,该假设何办呢当然,学
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理交接班制度
- 药物外渗的循证护理实践
- 食管结核患者的护理要点
- 门诊护理健康教育策略
- 骨质疏松护理中的健康教育
- 心脏支架术后居家护理要点
- 教招案例分析试题及答案
- “十五五”发展规划专项试题及答案
- 教案-单元五任务2 蜜橘推广-静态模板
- 磁头研磨工安全强化测试考核试卷含答案
- DB5104∕T82-2023 康养产业项目认定规范
- 【政史地 高考西北卷】2025年高考招生考试真题政治+历史+地理试卷(适用陕西、山西、青海、宁夏四省)
- 氢氟酸仓库管理制度
- 中医护理艾箱灸操作流程
- 高考英语必背688个高频词汇清单
- 肺心病患者的健康教育
- 2025年3月29日全国事业单位联考E类《职测》真题及答案
- 第10课 金与南宋对峙 七年级历史下册人教统编2024版
- 美容师模拟试题+答案
- GB/T 28544-2012封装闪烁体光输出和固有分辨率的测量方法
- FZ/T 07004-2019纺织行业绿色工厂评价导则
评论
0/150
提交评论