‘块’的形式的VBA语句比完整一行的代码功能和适用性方面更强。
一、IF语句
二选一:
IF 条件表达式 THEN
条件表达式返回True时要执行的操作和计算
[ELSE
条件表达式返回False时要执行的操作和计算]
END IF
多选一:
IF 条件表达式 THEN
条件表达式返回True时要执行的操作和计算
ELSEIF 条件表达式 THEN
条件表达式返回False时要执行的操作和计算
ELSEIF 条件表达式 THEN
条件表达式返回False时要执行的操作和计算
[ELSE
条件表达式返回False时要执行的操作和计算]
END IF
二、Select Case语句
Select Case 表达式
Case Is 条件表达式1 ‘如Case Is >8或者Case 1 to 8
条件表达式返回False时要执行的操作和计算
Case Is 条件表达式2
条件表达式返回False时要执行的操作和计算
Case Is 条件表达式3
条件表达式返回False时要执行的操作和计算
Case ELSE
条件表达式返回False时要执行的操作和计算
End Select
'多选一
Case Select相比于IF的多选一判断,适用性更强
三、For …Next语句
For 循环变量=初值 to 终值 [step 步长值]
循环体(要循环执行的操作或计算)
[Exit For] '不论设置循环执行多少次,当执行Exit For时,直接执行Next语句之后的代码
[循环体]
Next [循环变量名]
例1:
Public Sub 插入奇数()
Dim xrows As Byte
For xrows = 1 To 99 Step 2
Cells((xrows + 1) / 2, "A") = xrows
Next xrows End Sub
'找出100以内的奇数
例2:
Public Sub 被3整除的数()
Dim i As Byte
For i = 3 To 99 Step 3
Cells(i / 3, "A") = i
Next i
End Sub
'找出100以内能被3整除的数
四、For Each… next语句
For each 变量 in 集合名称或数组名称
语句块1
[Exit For]
[语句块2]
Next [元素变量]
'如果在数组中循环,变量定义为相应的数据类型,如果是在数组中循环,变量定义为Variant类型
例:
Public Sub 插入sheet名()
Dim sht As Worksheet, i As Integer
i = 1
For Each sht In Worksheets
Cells(i, "A") = sht.Name
i = i + 1
Next sht
End Sub
'插入工作簿中的工作表名
五、Do While语句
开头判断式:
Do [While 循环条件]
循环体
[Exit Do]
[循环体]
Loop
'如果循环体中存在Exit Do语句将跳出循环,执行Loop后语句
结尾判断式:
Do
循环体
[Exit Do]
[循环体]
Loop [While 循环条件]
使用结尾判断式语句会比开头判断式多执行一次循环体
例1:
Public Sub ShtAdd()
Dim i as byte
i=1
Do
Worksheets.Add
i=i+1
Loop While i<=5
End Sub
例2:
Public Sub ShtAdd2()
Dim i as byte
i=1
Do
If i>5 Then Exit Do
Worksheets.Add
i=i+1
Loop
End Sub
六、Do Until
开头判断式:
Do [Until循环条件]
循环体
[Exit Do]
[循环体]
Loop
结尾判断式:
Do
循环体
[Exit Do]
[循环体]
Loop [Until 循环条件]
Do While语句和Do Until用法基本相同,不同的是Do while语句在循环条件为False时退出循环,Do
Until语句在循环条件为True时退出循环。
例:
Public Sub 新建工作表()
Dim i As Integer
i = 1
Do Until i > 5
Worksheets.Add
i = i + 1
Loop
End Sub
七、GoTo语句
让程序跳转到目标地址
例:
Public Sub 跳转()
Dim sum As Long, i As Integer
i = 1
x: sum = sum + i
i = i + 1
If i <= 100 Then GoTo x
MsgBox "1到100的自然数和是:" & sum
End Sub
八、With语句
减少录入重复代码的次数及提高程序的运行效率
例:
Public Sub 简化()
With Worksheets("sheet1").Range("A1").Font
.Name = "宋体"
.Size = 12
.Bold = True
.ColorIndex = 3
End With
End Sub