[VBA Excel] Các toán tử Logic

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:

#1 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
Code language: VB.NET (vbnet)

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.

Ví dụ Kiểm tra Sheet2 đã có trong Workbook chưa? Nếu chưa tạo Sheet mới có tên là Sheet2.

Sub taosheet2()
Dim isSheet2 As Boolean
For i = 1 To Worksheets.Count
If Worksheets(i).Name = "Sheet2" Then
isSheet2 = True
Exit For
End If
Next i
If Not isSheet2 Then
Worksheets.Add.Name = "Sheet2"
End If
End Sub
Code language: VB.NET (vbnet)

Trong đó:

  • Vòng lặp FOR sẽ quét kiểm tra các Sheets. Nếu đã có Sheet tên là Sheet2 thì biến isSheet2 = TRUE và thoát vòng lặp.
  • If Not isSheet2: có nghĩa nếu không phải isSheet2=TRUE. Tức là chưa có Sheet tên Sheet2 thì tạo Sheet2 bằng dòng lệnh Worksheets.Add.Name = “Sheet2”.

** NOT luôn đứng trước điều kiện kiểm tra của nó

#2 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.

ham-and-or-not-trong-excel
  • 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 sịnh 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
Code language: VB.NET (vbnet)

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.

#3 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.

ham-and-or-not-trong-excel
  • 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.

Ví dụ Nhập vào 2 số từ Inputbox, nếu so1 = 12345 hoặc so2 =54321 thì hiện thông báo ra Msgbox “Ban da nhap dung”.

Sub kiemtraso()
Dim so1, so2 As Integer
so1 = InputBox("Nhap so", "So 1", 0)
so2 = InputBox("Nhap so", "So 2", 0)
If so1 = 12345 Or so2 = 54321 Then
MsgBox "Ban da nhap dung."
Else
MsgBox "Ban nhap chua chinh xac."
End If
End Sub
Code language: VB.NET (vbnet)

#4 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->9 hoặc 11->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
Code language: VB.NET (vbnet)

** 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.

Kết luận

Như vậy, bạn đã vừa tìm hiểu qua cách sử dụng các hàm toán tử Logic như NOT, AND, OR. Thông qua các ví dụ và diễn giải, mình hy vọng đã giúp bạn hiểu và vận dụng vào các bài toán thực tế.

Chúc bạn vui!

>>Xem thêm: Tách ngày tháng nằm từ chuỗi bằng VBA Excel

2 BÌNH LUẬN

BÌNH LUẬN

Please enter your comment!
Please enter your name here