《07中文 Excel 2000 编程 24 学时教程.pdf》由会员分享,可在线阅读,更多相关《07中文 Excel 2000 编程 24 学时教程.pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、下载下载第7学时循 环 代 码如果需要进行相同的操作 1 5次,你希望编写同样的代码行 1 5次吗?显然答案是否定的,用不着这样做。实际上,用循环语句可用轻而易举地实现:循环运行多次重复相同的代码。在本学时中,将学习D o循环和F o r语句。本学时的重点包括: 实现F o r语句 使用D o循环7.1 For.Next语句当编写代码时,你会发现经常需要多次重复进行某种操作。在需要重复执行一组语句的次数一定时,可以使用F o rN e x t循环。F o rN e x t语句的语法如下:For c o u n t e r = s t a r t To e n d Step s t e ps t
2、 a t e m e n t sExit Fors t a t e m e n t sNext c o u n t e rF o rN e x t语句执行一定的次数, 这取决于s t a r t和e n d参数的设置。c o u n t e r是一个整数变量,每次循环增加1,除非设置了可选参数 s t e p,此时c o u n t e r每次以s t e p的数值变化。每次循环都要执行N e x t语句。当c o u n t e r的值大于e n d的数值时,循环结束执行。可选的 Exit For语句通常放置在一条I f语句或者Select Case语句中。为了练习使用 F o rN e x
3、 t语句,请打开一个新的工作簿,将该工作簿保存为“ H o u r 7” 。按下A l t + F 11键打开Visual Basic编辑器。现在完成如下步骤,你将看到一个简单的F o rN e x t语句例子。1 )在工程资源管理器中的“T h i s Wo r k b o o k”上单击鼠标右键,并选择“插入” 、 “模块” 。2)插入一个新的名为“ B e e p M e”的子程序。这是一个使计算机发出一定次数蜂鸣声的简单过程。3)为B e e p M e过程输入如下代码:Dim iCounter As IntegerFor iCounter = 1 To 15B e e pN e x
4、t4)按下F 5键运行过程,应当听到很长的蜂鸣声。如果希望练习使用 F o r语句,可以改变语句的执行时间,例如将参数 1 5改为2 5或者5来观察变化。如果查看F o r语句的语法,你会注意到一个可选从句 S t e p。这个从句可以控制F o r语句如何计数。例如,可以设定让 F o r语句每次计数为 5、1 0或者任何你希望的单位。可以通过将s t e p设置为- 1使计数每次递减。按照如下步骤创建一个递减计数的 F o r语句:1)插入一个新的名为C o u n t d o w n的子程序,这个过程将显示一系列的消息框以说明 F o r语句和可选的S t e p从句的用法。2)为C o
5、 u n t d o w n过程输入如下代码:Dim iCounter As IntegerFor iCounter = 1 To 3MsgBoxCountUp: & iCounterN e x tFor iCounter = 3 To 1 Step - 1M s g B o x CountDown: & iCounterN e x t3)运行该过程,将看到第一个消息框,如图 7 - 1所示。从消息框中可以看到, i C o u n t e r变量的当前值为1。4)单击消息框上的“确定”按钮,直到看到如图7 - 2所示的消息框,此时i C o u n t e r的数值为3。5)单击“确定”按钮
6、,注意计数器的值开始递减。6)继续单击“确定”按钮对消息框做出响应,直到过程运行完毕。现在,你对F o r语句已经有了一定的了解,接下来将创建一个过程用 F o r语句来计算。如果将钱存放在利息为1 0 %的银行,你可以得到多少钱。完成如下步骤:1)插入一个新的名为“H o w M u c h M o n e y”的过程。2)为该过程输入如下代码:Dim iNumberOfYears As IntegerDim cSavings As CurrencyDim iCounter As IntegercSavings = InputBox(Enter amount you are placing
7、in the account: )i N u m b e r O f Years = InputBox(Enter number of years you are saving the money: )For iCounter = 1 To iNumberOfYe a r scSavings = cSavings * 1.1N e x tMsgBox In & iNumberOfYears & years youll have&_Format(cSavings, 0.00) & dollars. 第7学时 循 环 代 码使用61下载图7-1 观察本消息框的文本,可以看到计数器的数值是1图7-2
8、 在每个消息框显示之前,计数器不断递增3)运行H o w M u c h M o n e y过程。4)输入1 0 0 0作为存钱的数额。5)输入1 0作为存钱的年数。此时显示一个消息框,消息框中包括了 1 0年后你将得到的钱的数额。令人难以置信的是,1 0年后你将获得2 5 9 3 . 7 4元钱。6)单击“确定”按钮,退出消息框。使用变量i N u m b e r O f Ye a r s可控制循环执行的次数,最后的计算结果保存在变量c S a v i n g s中。你可能已经注意到,在H o w M u c h M o n e y过程中F o r m a t语句的用法。语句F o r m
9、a t ( c S a v i n g s , 0 . 0 0 )指定将保存在c S a v i n g中的结果显示两位小数。在第9学时中,将看到H o w M u c h M o n e y过程被转变为可以在工作表上使用的函数。7.2 Do循环只有当需要执行一系列语句的确定次数时, F o r语句才便于使用。为了克服这种局限性,V B A为F o r语句提供了另一种称为D o循环的语句。D o循环是条件循环。共有两种D o循环语句:Do While和Do Until。Do While语句在某个特定的条件为 Tr u e时重复执行一组语句,而 D oU n t i l则重复执行一组语句直到某个
10、特定的条件变为 Tr u e为止。D o循环语句的语法如下:语法1:Do While Until c o n d i t i o n s t a t e m e n t s Exit Dos t a t e m e n t s L o o p语法2:Do s t a t e m e n t s Exit Dos t a t e m e n t s Loop While Until condition在D o循环语句的两种语法之间有一个细微的区别。 语法1将测试条件放在循环的开始部分,这意味着,如果条件不满足,D o循环中的语句一次都不会执行。而语法 2将测试条件放在循环的结束部分,这意味着,
11、D o循环中的语句至少执行一次。在两种语句中,都可以用可选的Exit Do语句在必要的时候退出循环。和 Exit For从句一样,通常将 Exit Do语句放置在I f或者S e l e c t语句中。请完成如下步骤,创建一个使用D o循环的过程:1)插入一个新的名为“ E n t e r N a m e”的子程序。该过程将提示用户输入名字,直到用户输入了名字或者选择退出才结束执行。2)为E n t e r N a m e过程输入如下代码:Dim sName As StringDim iResponse As Integer62使用中文Excel 2000编程 2 4学时教程下载SName =
12、 Do While sName = sName = InputBox(Please enter your name: )If sName = TheniResponse = MsgBox(Do you wish to quit? , vbYe s N o )If iResponse = vbYes ThenExit DoEnd IfEnd IfL o o p值得提醒的是,当对用 I n p u t B o x函数创建的输入框单击“取消”按钮进行响应时,返回值为空字符串。如果对用 A p p l i c a t i o n . I n p u t B o x方法创建的输入框单击“取消”按钮进行响
13、应时,返回值为 F a l s e。3)运行该过程。4)为了响应消息框,按下空格键或者不在输入框中输入任何字符就单击“取消”按钮,显示一个询问是否希望退出的消息框。5)单击“否”按钮,再次显示输入框,输入你的名字,过程结束。在第4学时中,你已经学习了数组的概念。在当时的讨论中,谈到了动态数组。动态数组是大小可变的数组。将动态数组和 D o循环结合起来使用非常有用。完成如下步骤,创建一个和D o循环结合使用的动态数组:1)插入一个新的名为“ L i s t O f N a m e s”的过程。该过程将让用户输入名字,直到用户选择不再继续为止。每次用户输入一个新的名字,动态数组都增加一个元素来保存
14、这个名字。2)为L i s t O f N a m e s过程输入如下代码:Dim iCount As IntegerDim sNames () As StringDim iResponse As IntegerDim i As Integer iResponse = vbYe sDo While iResponse = vbYe siCount = iCount + 1ReDim Preserve sNames(iCount) As StringsNames(iCount) = InputBox(Please enter a name: )If sNames (iCount) = Theni
15、Response = MsgBox(Do you wish to continue?,vbYe s N o )If iResponse = vbYes ThensNames(iCount) = InputBox(Please enter a name: )End IfEnd IfL o o pFor i= 1 To iCount1MsgBox(Name # & i & is sNames(i)N e x t第7学时 循 环 代 码使用63下载3)运行该过程,显示的第一个消息框如图 7 - 3所示。4)输入“B o b”作为第一个名字并按回车键。5)输入“M a r y”作为第二个名字并按回车键
16、。6)输入“To m”作为第三个名字并按回车键。7)单击“取消”按钮,显示一个消息框询问是否希望继续。8)单击“否” ,显示一个包含第一个名字B o b在内的消息框。9)单击“确定”按钮,显示名字M a r y。1 0)单击“确定”按钮,显示名字To m。11)单击“确定”按钮,过程结束。过程L i s t O f N a m e s的强大之处在于,在过程开始运行之前,不用知道将要输入多少个名字。完成的过程如程序清单7 - 1所示。程序清单7-1 ListOfNames过程1: Sub ListOfNames ()2: Dim iCount As Integer3: Dim sNames ()
17、 As String4: Dim iResponse As Integer5: Dim i As Integer6 :7: iResponse = vbYe s8 :9: Do while iResponse = vbYe s10: iCount = iCount + 111: ReDim Preserve sNames(iCount) As String12: sNames(iCount) = InputBox(Please enter a name: )13: If sNames(iCount) = Then14: iResponse = MsgBox(Do you wish to con
18、tinue?,vbYe s N o )15: If iResponse = vbYes Then16: sNames(iCount) = InputBox(Please enter a name: )64使用中文Excel 2000编程 2 4学时教程下载图7-3 本输入框将一直显示,直到选择“取消”按钮为止17: End If18: End If19: Loop2 0 :21: For i = 1 To iCount - 122: MsgBox Name # & i & is & sNames(i)23: Next24: End Sub本过程中首先需要查看的是变量的声明:Dim iCount
19、 As IntegerDim sNames () As StringDim iResponse As IntegerDim i As Integer变量i C o u n t在D o循环的开始部分不断递增,并且用来控制数组的大小和对数组元素的选择。s N a m e数组是一个动态数组,每次执行 D o循环数组大小都会改变。 i R e s p o n s e变量跟踪用户是否希望继续输入名字。 i R e s p o n s e同时也用来控制循环是否继续执行。整数 i用来控制显示名字的F o r语句。声明变量之后,首先应当对 i R e s p o n s e变量进行初始化:iResponse
20、= vbYe s现在,该变量已经初始化了,接下来开始执行循环语句:Do While iResponse = vbYe s因为 i R e s p o n s e已经初始化为 v b Ye s,所以循环开始执行。循环所做的第一件事是将i C o u n t加1。循环第一次运行时, i C o u n t的值变为 1;第二次运行时, i C o u n t的值变为 2;等等。i C o u n t增加后,就可用来重新设置数组 s N a m e s的大小。新增加的元素用于保存新的名字:iCount = iCount +1ReDim Preserve sNames(iCount) As String
21、sNames(iCount) = InputBox(Please enter a name: )接下来,需要做的是测试用户是否选择了“取消”按钮或者是否忘记了输入一个新的名字:If sNames(iCount) = TheniResponse = MsgBox(Do you wish to continue? , vbYe s N o )If iResponse = vbYes ThensNames(iCount) = InputBox(Please enter a name: )End IfEnd If当循环执行完毕后,可以用 F o r语句显示用户输入的名字。在 F o r语句中,可用语句
22、的计数器使用数组中相应的元素:For i = 1 To iCount 1MsgBox Name # & i & is & sNames(i)N e x t注意,F o r语句中的计数器是从 i = 1到i C o u n t - 1,需要将 i C o u n t减1,以补偿变量在 D o循环顶部的加1。如果希望看到不减 1的结果,可以从该语句中删除 - 1,并再次运行,你将看到一个多余的显示空名字的消息框。现在你不仅明白了D o循环的作用,同时也看到了动态数组的作用。第7学时 循 环 代 码使用65下载7.3 学时小结在本学时中,你学到了V B A中的循环机制。通过使用 F o r语句,掌握
23、了如何多次执行相同的语句。通过使用 D o循环,掌握了如何有条件地多次执行相同的语句。本学时也扩展了你的有关数组,特别是动态数组的知识。将动态数组和循环结合起来是一种非常有效的创建动态变量的方式。7.4 专家答疑问题:使用循环的目的是什么?解答:是为了多次执行一组语句。问题:什么时候应该将条件放在 D o循环的开始部分,而不是将条件放在 D o循环的结束部分?解答:通过询问自己循环需要执行的最少次数就可以知道。如果答案是 1,那么将条件放在循环的结束部分;如果答案是0,那么将条件放在循环的开始部分。7.5 课外作业思考题和练习题是为了使你能够进一步地理解所学内容,答案请参考附录。7.5.1 思
24、考题1)V B A中两种主要的循环类型是什么?2)从循环中跳出来的语句是什么?3)D o循环的两种类型是什么?4)判断题:D o循环的条件必须放在循环的开始部分。7.5.2 练习题首先,创建一个名为E n t e r H o u r s的过程,用F o r语句让用户输入雇员每周五天的工作时间,并计算出总的工作时间,用消息框显示总的工作时间。接下来,创建另一个名为S a l a r y的过程。提示用户输入雇员每小时的工资。该公司每小时的最低工资为6元。用D o循环不断显示输入框,直到用户输入了所需的数据。用这些数据根据E n t e r H o u r s计算出来的工作时间算出总的工资,并用消息框显示。提示:将保存总的工作时间的变量声明为公共变量,先运行 E n t e r H o u r s,再运行S a l a r y。66使用中文Excel 2000编程 2 4学时教程下载