Cấu trúc điều khiển trong VBA bao gồm:
Giống như hàm IF trong Excel, cấu trúc IF thường sử dụng để xét tính logic Đúng/Sai của 1 vấn đề. Cấu trúc bao gồm:
- Nếu mệnh đề Đúng (thỏa mãn) thì xảy ra điều gì
- Nếu mệnh đề Không Đúng (không thỏa mãn) thì xảy ra điều gì
Cấu trúc IF ELSE trong VBA Excel dạng đơn giản
Chỉ xét trong trường hợp mệnh đề đúng và thường được viết như sau
Option Explicit Sub Gender() Dim blnGender As Boolean blnGender = True If blnGender Then MsgBox "Male" End If End Sub
Cấu trúc rút gọn hơn có thể viết rút gọn trên cùng một dòng
Option Explicit Sub Gender() Dim blnGender As Boolean If Not blnGender Then MsgBox "Female" End Sub
Cấu trúc IF ELSE trong VBA Excel dạng đầy đủ
Bao gồm cả trường hợp mệnh đề Đúng và mệnh đề Không Đúng.
Option Explicit Sub Gender() Dim blnGender As Boolean If blnGender Then MsgBox "Male" Else MsgBox "Female" End If End Sub
Cấu trúc IF ELSE trong VBA Excel lồng nhau
Với những yêu cầu phức tạp hơn, cấu trúc một lần IF không thể đáp ứng hết các điều kiện. Do vậy, cần thiết phải sử dụng lồng ghép nhiều cấu trúc IF trong một công thức.
Option Explicit Sub Classify() Dim intPoint As Integer intPoint = 8 If intPoint >= 9 Then MsgBox "Excellent" Else If intPoint >= 7 Then MsgBox "Good" Else If intPoint >= 5 Then MsgBox "Average" Else MsgBox "Poor" End If End If End If End Sub
Với ví dụ trên chúng ta có thể rút gọn thành
Option Explicit Sub Classify() Dim intPoint As Integer intPoint = 8 If intPoint >= 9 Then MsgBox "Excellent" ElseIf intPoint >= 7 Then MsgBox "Good" ElseIf intPoint >= 5 Then MsgBox "Average" Else MsgBox "Poor" End If End Sub
Cấu trúc SELECT CASE trong VBA
Select Case có thể thực hiện kiểm tra biến theo kiểu chuỗi hoặc kiểu số. Nhưng thông thường chúng ta hay sử dụng kiểm tra biến dữ liệu là số. Cùng ví dụ xếp loại học sinh dùng Select Case như sau
Option Explicit Sub Classify() Dim intPoint As Integer intPoint = 8 Select Case intPoint Case Is >= 9 MsgBox "Excellent" Case Is >= 7 MsgBox "Good" Case Is >= 5 MsgBox "Average" Case Else MsgBox "Poor" End Select End Sub
Select Case có thể được nhóm lại với các điều kiện trùng nhau, ví dụ
Option Explicit Sub DayInMonth() Dim intMonth As Integer intMonth = 8 Select Case intMonth Case 1, 3, 5, 7, 8, 10, 12 MsgBox "Tháng " & intMonth & " có 31 ngày" Case 4, 6, 9, 11 MsgBox "Tháng " & intMonth & " có 30 ngày" Case Else ' 2 MsgBox "Tháng " & intMonth & " có 28/29 ngày" End Select End Sub