程序通常都是顺序依次执行的。语句结构用来控制程序执行的步骤, 一般有
选择语句、
循环 语句。
选择语句
选择语句用来判断程序执行哪一部分代码
语法:If ... Then ... End If
If选择可以嵌套使用
常用的三种形式:
- 普通模式
If 10 > 3 Then 操作1 ' 执行这一步End If' 增加Else和Else If逻辑If 1 > 2 Then 操作1ElseIf 1 = 2 Then 操作2Else 操作3 ' 执行这一步End If
- 嵌套If语句
If 10 > 3 Then If 1 > 2 Then 操作1 Else 操作2 ' 执行这一步 End IfElse 操作3End If
- Select ... Case ... 多选一,类似于java中的 Switch ... Case ... 语句
Dim Length As IntegerLength = 10Select Length Case Is >= 8 操作1 ' 执行这一步 Case Is > 20 操作2 Case Else 操作3End Select
sample code:
Private Sub switch_demo_Click() Dim MyVar As Integer MyVar = 1 Select Case MyVar Case 1 Debug.Print "The Number is the Least Composite Number" Case 2 Debug.Print "The Number is the only Even Prime Number" Case 3 Debug.Print "The Number is the Least Odd Prime Number" Case Else Debug.Print "Unknown Number" End SelectEnd Sub
1.5.2 循环语句
循环语句用来让程序重复执行某段代码
- 普通For ... Next循环
语法:For 循环变量 = 初始值 To 终值 Step 步长
注:在VBA循环中可以使用Exit关键字来跳出循环,类似于Java中的break, 在for循环中语法为:Exit For,在do while循环中为:Exit Do,也可以利用GoTo语句 跳出本次循环,详见:1.5.3 GoTo语句
Dim i As IntegerFor i = 1 To 10 Step 2 ' 设定i从1到10,每次增加2,总共执行5次 操作1 ' 可以通过设定 Exit For 退出循环Next i
- For Each ... 循环
语法:For Each 变量 In 集合或数组
Dim arrDim i As Integerarr = Array(1, 2, 3, 4, 5)For Each i In arr ' 定义变量i,遍历arr数组 操作1Next i
- Do ... While循环
语法:
Sample code:
Dim i As Integeri = 1Do While i < 5 ' 循环5次 i = i + 1Loop' ===============================================' 将判断条件后置的Do...WhileDim i As Integeri = 1Do i = i + 1Loop While i < 5 ' 循环4次
- Do Until 直到...循环
语法:
Do Until 表达式 表达式为真时跳出循环
Dim i As Integeri = 5Do Until i < 1 i = i - 1Loop' ===============================================' 后置的Do UntilDim i As Integeri = 5Do i = i - 1Loop Until i < 1
1.5.3 GoTo语句
GoTo 无条件地分支直接跳转到过程中指定的行。
注: GoTo语句大多用于错误处理时,但会影响程序结构,增加阅读和代码调试难度, 除非必要时,应尽量避免使用GoTo语句。
Sub TestGoTo Dim lngSum As Long, i As Integer i = 1JUMPX: i = i + 1 If i <= 100 Then GoTo JUMPX Debug.Print "1到100的自然数之和是:" & lngSumEnd Sub
CONTINUE
循环中实现continue操作,类似java语言的continue直接跳出本次循环
Sub continueTest() Dim i For i = 0 To 5 If i = 1 Then '// 跳转到CONTINUE部分 GoTo CONTINUE ElseIf i = 3 Then '// 跳转到CONTINUE部分 GoTo CONTINUE End If '//没有GoTo语句的时候打印counter: i Debug.Print iCONTINUE: '// countinue跳转块,可以写逻辑,如果没有逻辑就直接进行下次循环 NextEnd Sub
选择和循环提供了多种实现同一目的的语句结构,他们都能实现同样的作用, 差别一般是初始条件。还有书写的复杂度。正确的选择要使用的语句结构, 代码逻辑上会更清楚,方便人的阅读。
简写
在操作对象的属性时常常要先把对象调用路径都写出来,用with可以简化这一操作
' 简化前WorkSheets("表1").Range("A1")."仿宋"WorkSheets("表1").Range("A1").("表1").Range("A1").' 使用`With`With WorkSheets("表1").Range("A1").Font .Name = "仿宋" .Size = 12 .ColorIndex =3End With
神器放送
VBA编程神器 VBA代码助手 可以极大提高编程速度,降低编程门槛欢迎使用
私信回复 代码助手 即可获得