VBA程序设计按语句执行的先后顺序,程序可以分为3种基本的控制结构:顺序结构、分支结构(即选择结构)和循环结构。
(1)顺序结构
如果没有使用任何控制执行流程的语句,程序执行的基本流程是从左到右、自顶向下地顺序执行各条语句,直到整个程序结束,这种执行流程称为顺序结构。
(2)分支结构(选择结构)
分支结构在执行时的特点是:根据所给定的选择条件为真或为假,决定从各实际可能的不同分支中执行某一分支的相应操作。纵然分支众多,也仅选其一。
VBA中的分支结构包括以下4种语句形式,它们的执行逻辑和功能略有不同。
1)单分支结构。
语句格式:
If条件表达式Then
语句块
EndIf
或:If条件表达式Then语句块
功能:条件表达式一般为关系表达式或逻辑表达式。当条件表达式为真时,执行Then后面的语句块或语句,否则不做任何操作。
2)双分支结构。
语句格式:
If条件表达式Then
语句块1
Else
语句块2
End If
或If条件表达式Then 语句1 Else语句2
End If
功能:当条件表达式的结果为真时,执行Then后面的语句块1或语句1,否则执行Else后面的语句块2或语句2。
3)多分支结构。
•If语句
语句格式:
If 条件表达式1Then
语句块1
ElseIf 条件表达式2Then
语句块2
…
[Else
语句块n+1]
End If
功能:依次判断条件,如果找到一个满足的条件,则执行其下面的语句块,然后跳过End If,执行后面的程序。如果所列出的条件都不满足,则执行E1se语句后面的语句块;如果所列出的条件都不满足,又没有Else子句,则直接跳过EndIf,不执行任何语句块。
•Select Case语句
语句格式:
Select Case变量或表达式
Case 表达式1
语句块1
Case 表达式2
语句块2
…
Case 表达式n
语句块n
[Case Else
语句块 n+1]
EndSelect
功能:根据变量或表达式的值,选择第1个符合条件的语句块执行,即先求变量或表达式的值,然后顺序测试该值符合哪一个Case子句中的情况,如果找到了,则执行该Case子句下面的语句块,然后执行End Select下面的语句;如果没找到,则执行CaseElse下面的语句块,然后执行End Select下面的语句。
(3)循环结构
1)For循环语句。For循环语句常用于循环次数已知的循环操作。
语句格式:
For循环变量=初值To终值[Step步长](www.xing528.com)
语句块1
[Exit For]
语句块2
Next[循环变量]
执行过程:
•将初值赋给循环变量。
•判断循环变量的值是否超过终值。
•如果循环变量的值超过终值,则跳出循环;否则继续执行循环体(For与Next之间的语句块)。
•在执行完循环体后,将循环变量的值加上步长赋给循环变量,再返回第二步继续执行。
•循环体中如果含有Exit For,则循环体语句执行到此跳出循环。ExitFor后的所有语句不执行。
2)While循环语句。For循环适合于解决循环次数事先能够确定的问题。对于只知道控制条件,但不能预先确定执行多少次循环体的情况,可以使用While循环。
语句格式:
While条件表达式
语句块
Wend
执行过程:
•判断条件是否成立,如果条件成立,就执行语句块;否则,转到第三步执行。
•执行Wend语句,转到第一步执行。
•执行Wend语句下面的语句。
3)Do循环语句。Do循环具有很强的灵活性,Do循环有以下几种语句格式。
语句格式1:
Do While条件表达式
语句块1
[Exit Do]
语句块2
Loop
功能:若条件表达式的结果为真,则执行Do和Loop之间的循环体,直到条件表达式结果为假。若遇到ExitDo语句,则结束循环。
语句格式2:
Do Until条件表达式
语句块1
[Exit Do]
语句块2
Loop
功能:若条件表达式的结果为假,则执行Do和Loop之间的循环体,直到条件表达式结果为真。若遇到ExitDo语句,则结束循环。
语句格式3:
Do
语句块1
[Exit Do]
语句块2
Loop While条件表达式
功能:首先执行一次Do和Loop之间的循环体,执行到Loop时判断条件表达式的结果,如果为真,继续执行循环体,直到条件表达式结果为假。若遇到Exit Do语句,则结束循环。
语句格式4:
Do
语句块1
[Exit Do]
语句块2
Loop Until条件表达式
功能:首先执行一次Do和Loop之间的循环体,执行到Loop时判断条件表达式的结果,如果为假,继续执行循环体,直到条件表达式结果为真。若遇到ExitDo语句,则结束循环。
(4)GoTo控制语句
语句格式:GoTo标号。
功能:无条件地转移到标号指定的那行语句。过多使用GoTo语句,会导致程序运行跳转频繁,程序结构不清晰,调试和可读性差,建议不用或少用GoTo语句。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。