WORD-VBA编程-从零开始学VBA(2)

2019-01-10 14:49

代码“If X <> \

分别运行本程序与最前面的程序,并选择“取消”,对比一下运行的效果,从完善后的程序中——想必您不难看出“常数”在程序中的作用了吧?

请再多体会体会这本实例中的这几个例子,您对MsgBox与InputBox这两个函数的熟悉程度,将直接影响您后面的学习。加点油吧。 本实例的知识扩展:

1、请将本课中学到的MsgBox函数的参数分别运用到实例一中,看看效果如何。 2、请思考:哪些情况下,会使用到MsgBox函数的不同返回的值?

好了,实例二到此结束,请再回顾一遍本实例的知识点,您都掌握了吗?是不是觉得VBA并不像想象中那么困难?如果您确信已完全掌握了前面这两课的内容,那么,准备接受实例三的挑战吧!

从零开始,步入Word宏编程的世界(第三讲)

实例三:“猜数游戏”

知识点:1、学习变量的类型与转换; 2、掌握程序的循环与判断; 3、学习随机数的生成。

通过对前面两个实例的学习,相信您对自己掌握VBA编程已充满了信心。今天,我们将编写一个小小的游戏程序。这个游戏程序中既包含了新的知识点,又要考验您对前两课知识运用的熟练程度,就让我们静下心来克服这个小难关吧。

游戏内容是这样的:电脑生成一个0到99之间的整数,请您来猜这个数是多少,每猜一次,电脑都给您一个提示,直到您猜中为止。 程序思路:

1、电脑首先生成一个0到99之间的整数; 2、请您输入您所猜的数;

3、把您输入的数与电脑所生成的数进行比较,并给出“您猜大了”或“您猜小了”的提示;

4、如果您猜对了,则退出程序;如果您没有猜对,则循环回第二步重复运行,让您再次输入自己所猜的数。

请看代码,必要的地方已添加了注释。程序中退格与对齐是为了便于理解。请您先试着自己把代码读

读,看看能不能读懂。)

’ ’=========程序名“您猜”========= Sub 您猜()

Dim a, b, c, d’申明了四个变量,变量间用英文逗号分开,与前面实例二申明变量的写法不同,结果相同。

a = 0’这个变量用于计算您猜了多少次。

Randomize’准备生成一个随机的数字,先初始化随机数生成器。

b = Int(100 * Rnd) ’生成一个百以内的随机数,“Rnd”就是“随机数生成函数”。 Do’开始循环

a = a + 1’您猜的次数增添一次。当再次循环到这儿时,次数会继续往上加。

c = InputBox(\请输入您所猜的数\ d = CInt(c) ’将变量“c”转化为整数,再将值赋给“d”。 If b < d Then’进行比较,如果猜大了。 MsgBox (\您猜的数大了\ ElseIf b > d Then’进行比较,如果猜小了。 MsgBox (\您猜的数小了\ Else: b = d’进行比较,如果猜对了。

MsgBox (\哈哈,您猜对了!\ Exit Do’既然已经猜对了,就跳出循环。

End If’结束比较。

Loop’回到前面的Do,继续循环。

MsgBox (\您猜了\次!\ End Sub’结束程序。

运行本程序,看看效果。并根据注释,体会循环与判断在本程序中的作用。 代码解说:

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、Exit Do以及Loop为一个整体。其中,Do是开始进入循环; Loop是指回到Do语句处,再次进行循环; Exit Do是指当符合某一个条件时就直接退出循环。在本程序中,Exit Do是指当猜中了(即b=d)时,退出循环;而无论是猜大了(b>d),还是猜小了(b

程序中数字的比较,是利用If语句来实现的。在实例二中,我们已接触过 If 语句,If语句的基本格式是: If(条件)Then(结果)End If’(结束If判断语句)

在 If 语句判断的过程当中,还可以有子判断语句:Elseif then 。

对于一个具有多重判断的语句,我们大致可以这样理解:如果(If),那么(Then),否则(Elseif),那么(Then),再否则(Elseif),那么(Then)??(ElseIf根据情况可以套嵌很多层)最终(Else),结束判断(End If)。

本实例的知识扩展:

1、试一试自己在程序结尾处再添几句,判断所猜的次数:如果小于六次,给出一个评价“优”;等于六次,给出一个评价“良”;大于六次,给出一个评价“您还需努力!”。

2、试一试给程序补充部分内容,其功能为:在猜完一次后,询问游戏人“您还愿意再玩一次吗?”,并根据游戏者的响应,再次运行程序或退出程序。

3、如果在刚开始游戏让我们输入数字时,我们选择了“取消”就会出错,您现在能利用自己已有的知识来解决这个问题吗?

好了,到这里,我们再回过头来看一看这个程序,理解起来还有困难吗?本实例可能比前两个实例稍难一点。如果您能顺利完成知识扩展中的问题题,那么祝贺您,您已过了入门的第一个小难关,可以进入下一步的实例四了,如果您还存在疑问,则再请多动手把前三个实例练一练!! 附:完善的猜数游戏——

Sub 您猜()

Dim a, b, c, d, e, f

e=6’该数字用于计算所猜次数是否为优、良等 Do a = 0 Randomize

b = Int(100 * Rnd) Do

a = a + 1

c = InputBox(\请输入您所猜的数\d = CInt(c) If b < d Then

MsgBox (\您猜的数大了\ElseIf b > d Then

MsgBox (\您猜的数小了\Else: b = d

MsgBox (\哈哈,您猜对了!\Exit Do End If Loop

MsgBox (\您猜了\次!\If a>e

MsgBox (\您还需努力!\

Elseif aMsgBox (\您的猜数能力:优!\Else a=e

MsgBox (\您的猜数能力:良!\End if

f=MsgBox (\您还愿意继续玩吗?\,4,”继续游戏”)’’注意此处常数的使用 if f=7 then’’注意此处消息框返回值的使用 exit do else end if loop End Sub

从零开始,步入Word宏编程的世界(第四讲)

实例四:窗体与基本的控件

知识点:1、窗体与控件的使用;

2、什么是“设计时”、什么是“运行时”; 3、了解什么是对像、属性、方法和事件。

扎实的基础知识是我们顺利掌握VBA编程语言的先决条件。说到基础知识,我想告诉朋友们—— 我们必须建立起“面向对像”的编程思想。“面向对像”进行编程的思想实在是太重要了!我们所接触的所有事物都是对像,都有属性,也都有属性值。如果您不相信?那么请看——

您怎样来描述自己家里的电视机呢?它的身高?体重?住址?年龄?颜色?频道个数?声道个数?音量大小?屏幕大小?分辨率?刷新率???对,这些都是电视机的“属性”,在这里,“电视机”就是一个“对像”。

以下,假设我们生活在“VBA编程语言”当中,生活中的事物就是VBA的对像——那么,我们怎样来找出一个“对像”的属性,或是怎能样来对“对像”的属性进行赋值呢?看下面的程序: ‘========程序名“您想看几频道”======== Sub 您想看几频道 () Dim X

X = InputBox(“请输入您想看的频道的值:”) 电视机 .频道 = X End Sub

运行这代码,输入您想看的频道的值,比如“10”或是“36”,那么,您就会看到10频道或是36频道的节目。这里,“电视机”是对像,“频道”是它的属性,“10或36”是它的属性值。在“对像”引用自己的某个“属性”时,我们在它们之间用一个小圆点(英文的句号)来表示,具体的格式如代码“电视机.频道 = X”中所示;设置值的时候,用等号来赋予它。 说到赋值,您是不是想执行“电视机.屏幕尺寸 = 100 吋”命令呢?呵呵,有些事物的属性值是“只读”的,不能修改,比如电视机的重量等。

现在,我正在看一个节目,但我不知道这个节目所在的是几频道,怎么办呢?请看程序—— ‘========程序名“当前频道是多少”======== Sub 频道是多少() Dim 频道的值

频道的值 = 电视机 .当前频道 MsgBox ( “频道的值” ) End Sub

程序不难懂吧?

前一个程序“您想看几频道”中,我们是将“值”赋予对像的属性,后一个“频道是多少”程序中,我们是取得对像属性的“值”。这两种类型的程序在使用时刚好相反,但,它们在VBA编程语言中的运用几乎可以说是无处不在!!请一定要认真体会这两个程序中关于“对像”、“属性”与“值”之间的关系!! 那么,什么又是事件和方法呢?对于电视机来说,当它的电源接通时就发生了“电源接通事件”,反之,它的电源断掉时就发生了“电源断掉事件”。方法,则是指人对电视机进行的操作,比如,现在显示的是10频道,我在电视机的频道调节按钮上,向前按了5次,则进入了15频道。电视机支持使用“频道按钮”进行“频道调节”的动作,就可以说成是它支持“用按钮调整频道”的“方法”,“5”就是这个方法的参数(只要是您家里电视机所支持的值,当然都可以作为它的参数。)。 那位朋友说了“喂,大哥,我们可是在学习Office的VBA编程语言啊!怎么扯到电视机上去了?!”好吧,我们来谈Office。Office是一个对像,Word是一个对像,窗口是一个对像,文档是一个对像,段落、标题、一行文字、一个字符、一个标点、一个表格、一个单元格??无一不是对像!它们都有颜色、大小、


WORD-VBA编程-从零开始学VBA(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人才的概念和特征

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: