Trong bài viết về VBA Excel này, bạn sẽ tiếp tục tìm hiểu về cách sử dụng và áp dụng các toán tử Logic như NOT, AND, OR trong VBA để đơn giản hóa lệnh trong các hàm so sánh điều kiện.
Bạn sẽ hay thấy các toán tử Logic được sử dụng trong các nhánh hàm như IF, ELSE IF. Giúp nhóm nhiều điều kiện cùng thực thi chức năng như nhau. Vì vậy, hàm lệnh sẽ gọn và dễ hiểu hơn thay vì sử dụng nhiều hàm IF.
Các toán tử Logic thường dùng trong VBA Excel
Để kiểm tra các điều kiện bạn có thể sử dụng 3 toán tử Logic phổ biến trong VBA sau:
- Toán tử Logic NOT trong vba Excel
Logic NOT được dùng để kiểm tra một giá trị hay một biến không phải là một cái gì đó.
Ví dụ kiểm tra Cells A2 có phải là Cells rỗng hay không.
Sub CellA2()
If Not Range(“A2, A2”) = “” Then
MsgBox “Cell A2 không phai la Cell rong”
Else
MsgBox “Cell A2 la Cell rong”
End If
End Sub
Trong đó:
- Not Range(“A2, A2”) = “”: có nghĩa là Cell A2 không phải là Cell rỗng. Tức là Cells A2 có giá trị, nếu đúng thì thực thi nhánh lệnh.
- Toán tử Logic AND trong VBA Excel
AND được dùng khi bạn muốn kiểm tra nhiều giá trị, biến hoặc điều kiện. Nếu tất cả các điều kiện là TRUE thì thực thị lệnh nhánh đó.
Để rõ hơn Logic AND hoạt động, bạn hãy xem bảng Logic dưới đây.
- Xét qua bảng, chỉ duy nhất AND trả về 1 (TRUE) khi tất cả điều kiện khác đều bằng TRUE. Có nghĩa là để thực thi nhánh lệnh có AND thì tất cả các điều kiện phải là TRUE.
Ví dụ: Kiểm tra điểm nhập vào của học sinh có phải là điểm khá hay không?
Sub kiemtradiem()
Dim diemso As Double
diem = InputBox(“Nhap so”, “Diem”, 0)
If (Round(diem, 1) >= 6.5) AND (Round(diem, 1) <= 7.9) Then
MsgBox “Hoc luc Khá”
Else
MsgBox “Khong phai hoc luc Khá”
End If
End Sub
Trong đó:
- Điểm số được nhập vào từ InputBox.
- Ở điều kiện IF, kiểm tra giá trị nhập vào vừa thỏa lớn hơn 6.5 vừa phải nhỏ hơn 7.9.
- Toán tử Logic OR trong VBA Excel
Khác với toán tử AND. Toán tử OR chỉ cần một trong các điều kiện đúng thì sẽ ngưng kiểm tra các điều kiện còn lại và thực thị lệnh trong nhánh đó.
Bạn hãy xem bảng Logic dưới đây để hiểu rõ hơn về cách Logic OR hoạt động.
- Xét qua bảng thì chỉ có duy nhất OR trả về 0 (FALSE) khi các điều kiện khác đều bằng FALSE. Và ở các trường hợp còn lại đều trả về TRUE khi một điều kiện là TRUE. Điều này có nghĩa, để thực thi nhánh lệnh có OR thì ít nhất một điều kiện phải có kết quả là TRUE.
- Cách sử dụng các toán tử Logic trong cùng một nhánh điều kiện
Trong nhiều trường hợp, bạn có thể sử dụng nhiều nhóm Logic với nhau trong cùng một nhánh điều kiện IF. Việc này sẽ giúp hàm lệnh của bạn đơn giản hơn rất nhiều so với sử dụng nhiều IF lồng nhau.
Ví dụ: Kiểm tra số nhập vào có thỏa các điều kiện như nằm trong kho ảng giá trị từ 3 đến 9 hoặc 11 đến 15 và không phải là giá trị 7 hoặc 14.
Sub kiemtra()
Dim so1 As Integer
so1 = InputBox(“Nhap so”, “So 1”, 0)
If ((so1 >= 3 And so1 <= 9) Or (so1 >= 11 And so1 <= 15)) And Not (so1 = 7 Or so1 = 14) Then
MsgBox “Ban da nhap dung”
Else
MsgBox “Ban da nhap sai”
End If
End Sub
** Cách nhóm điều kiện sẽ thực thi từ trái qua phải và phân nhóm với nhau bằng cặp dấu (), vì vậy bạn cần đặt nhóm chính xác để kết quả trả về đúng.