前面各节介绍了Excel VBA和Python中常见的语法结构,除了它们以外还有一些比较特殊的语句,用于实现跳出、跳转、终止和占位等操作,本节对它们进行介绍。
Excel VBA中的其他语句
Excel VBA中的其他语句包括End语句、Exit语句、Goto语句和Stop语句等。
1.End语句
End语句使宏的运行立刻终止。如果宏正在被另一个宏通过MacroRun语句运行,则该宏接着MacroRun运行。
2.Exit语句
Exit语句使宏不再运行剩下的语句。其语法格式为
Exit {All|Do|For|Function|Property|Sub|While}
其中各参数的意义为:
Do 退出Do循环
For 退出For循环
Function 退出函数块。注意:本语句清除Err并将Error$设置为空。
Property 退出属性块。注意:本语句清除Err并将Error$ 设置为空。
Sub 退出过程块。注意:本语句清除Err并将Error$ 设置为空。
3.Goto语句
利用Goto语句跳转到标签处并从该处接着运行。只能跳转到当前自定义的过程、函数或属性中的标签处。
4.Stop语句
利用Stop语句暂停运行。如果重新运行,将从下个语句开始运行。使用End语句终止宏的运行。
下面的过程中,当I等于3时,暂停运行。
Sub Main
For I = 1 To 10
Debug.Print I
If I = 3 Then Stop
Next I
End Sub
Python中的其他语句
Python中的其他语句包括break, continue和pass语句等。
break语句
break语句用在while循环或for循环中,在必要的时候终止和跳出循环。
下面用for循环对给定的数据区间进行累加求和,要求累加和的大小不能超过100,也就是说,此时用break语句终止和跳出循环。
本示例的py文件存放路径为Samples\ch05\Python\sam05-014.py。
sum=0
num=0
for num in range(100):
old_sum=sum
sum+=num
if sum>100:break #累加和大于100时跳出循环
print(num-1) #数字
print(old_sum) #小于100的累加和
在Python IDLE文件脚本窗口,在"Run"菜单中单击"Run Module"选项,则IDLE命令行窗口显示下面的结果:
>>> = RESTART: …\Samples\ch05\Python\sam05-014.py
13
91
也可以在while循环中使用break语句跳出循环。用while循环改写上面的程序。本示例的py文件存放路径为Samples\ch05\Python\sam05-015.py。
sum=0
n=0
while(n<=100):
old_sum=sum
sum+=n
if sum>100:break #累加和大于100时跳出循环
n+=1
print(n-1)
print(old_sum)
运行该程序,输出相同的计算结果。
continue语句
continue语句跟break语句的作用类似,都是用在循环中,用于跳出循环。不同的是,break语句是跳出整个循环,continue语句则是跳出本轮循环。
下面的for循环输出0-4区间内的整数,但是不输出3。本示例的py文件存放路径为Samples\ch05\Python\sam05-016.py。
for i in range(5):
if i==3:continue
print(i)
第2行用了一个单分支判断结构,迭代变量取值为3时用continue跳出本轮循环。
在Python IDLE文件脚本窗口,在"Run"菜单中单击"Run Module"选项,则IDLE命令行窗口显示下面的结果:
>>> = RESTART: …/Samples/ch05\Python\sam05-016.py
0
1
2
4
可见,数据3没有输出。
pass语句
pass语句是占位语句,它不做任何事情,用于保持程序结构的完整性。在判断结构中,判断条件满足时,如果什么也不执行,会出错,即在文件或命令行执行下面的语句:
if a>1: #什么也不做
会出错。此时用pass语句放在冒号后面,虽然还是什么也不做,但保证了语法上的完整性,不会出错了。即
if a>1:pass #什么也不做
另外,在自定义函数时,如果定义一个空函数,也会出错。此时函数体放一个pass语句,就不会出错了。