Sub过程与程序流程控制语句
主讲:ggsmart(叶枫)
助教:apirl2008、swabe
Sub过程:
1、一个过程就是一组完成所需操作的VBA代码的组合
2、VBA的过程主要包括“Sub过程”和“Function过程”两种。自定义函数。
※Sub过程不可以返回值,Function过程可以返回值。
3、声明Sub过程
4、录制的“宏”就是一个简单的Sub过程,使用录制宏功能只能生成Sub过程的代码。
5、Sub过程的特点:
以“Sub过程名()”开头,以“End Sub”结尾;
Sub过程一般保存在模块里。
不返回运行结果
6、声明Sub过程
Sub过程的语法形式:
[Pubilc│Private][Static]Sub过程名称([参数1,参数2…..])
[语句块]
[Exit Sub]
[语句块]
End Sub
1、[Pubilc│Private] [Static]只能选一个
当选择Pubilc参数表明这过程是一个公共的过程,表明该工作薄中所有模块中其他的过程都可以返回这个过程。
当选择Private这个参数,就表明这个过程被声明为私有过程,只有在同一个模块中其他过程才可以访问。
当选择Static参数,就表明过程结束的时候,将保存过程中的变量。
◆ Sub过程名称-——→必须有
◆ [参数1,参数2,…..]一系列变量,这此变量接受传递过程参数值,用逗号分割参数。如果过程没有任何参数,就用一组空的括号,我们录制的宏都是没有参数的Sub过程。
◆ [语句块]
[Exit Sub]
[语句块]
作用是在过程认识结束之前强制、立即从过程中退出。 |
从过程执行另一个过程
输入过程名称以及参数,参数用逗号隔开。
过程名[参数1,参数2,……]
在过程名称以及参数前使用Call关键字,参数用括号括起来,并用逗号隔开。
Call过程名[参数1,参数2,……]
Sub test()
‘my sub
siyou
End Sub
Sub test()
‘mysub
‘siyou ‘第一种方法
Call mysub
Call siyou‘第二种方法
End Sub
利用Applicationc对象法的Run方法。
Applicationc.Run表示过程名的字符串(或字符串变量)
[参数1,参数2,……]
‘mysub
‘siyou ‘第一种方法
Call mysub
Call siyou
Applicationc.Run”mysub”
Dim a As String
a=“siyou”
Application Run a
4.2判断与循环语句
4.2.1If语句
◆If逻辑表达式Then
语句块1
[Else
语句块2]
End If
If——Then语句执行流程
出题的文件图片
第一种方式
两个if语句
第二种方式图片
Sub dt()
If [h6].value=[d6].value+[f6].value then
Msgbox “答对了,你真棒!”
Else
Msgboc“答错了,继续努力!”
End if
Call 出题‘调用过程,重新生成题目
End sub
用第二种方式比第一种方式要好的多。
例2:如果回答正确,则回答对,如果回答错误,则回答错误,判断h6是否有答案,否则提示没有输入答案,然后再进行判断是否答对或答错。
Sub test()
If[h6].value=”” then
Msgbox “还没有输入答案!”
Elseif[h6].value=[d6].value+[f6].value then ‘***检查是否答对
Msgbox“答对了,你真棒!”
。。。。窗体 答题指定test
If语句是可以嵌套的,可以在if语句再编写if语句,通常情况下我们将if语句用在二源判定上,当用在三种或多种策略当中做出选择,不使用if语句,使用select case语句。
If——Then——Else语句执行流程
执行流语句,表达式为真执行语句块1,否则执行语句块2.
If逻辑表达式1Then
语句块1
[ElseIf逻辑表达式2 Then
语句块2
ElseIf逻辑表达式3 Then
语句块3
…….
Else
语句块n]
End If
如果有3个语句以上,可用Select Case代替If——Then——Else
Select Case语句
Select Case测试表达式 测试表达式必须数值表达式或字符串表达式;
Case表达式列表1 表达式列表可以是用逗号分开的表达式,也可以使用TO或Is关键字,如:
Case 1,2,3,4
Case 1 to4
Case is<4
Case语句后面可以使用多重表达式,各表达式的数据类型可以不相同,它们之间是“逻辑或”的关系,如:
Case 1 to 4 ,”a”
语句块1
Case表达式列表2
语句块2
Case表达式列表3
语句块3
…….
Case表达式列表n
语句块n
[Case Else
语句块n+1]
End Select
图片
Sub sl1()
Select case[h6].value
数学等级A,B,C,D,F
For循环语句
For——Next循环语句
For循环变量=初值To终值[Step步长]
循环体
[Exit for]
循环体
Next[循环变量]
实例:
1到100的自然数和
Debug print i 把i的值在立即窗口显示
实例:
For Each——Next循环语句
For Each元素变量In对象集合
语句块
[Exit for]
语句块
Next[元素变量]
Do whlie语句(开关判断)执行流程
Do Until循环语句
