Toán tử Logic trong VBA (And - Or - Not)
Trong bài này mình sẽ giới thiệu các toán tử logic thường dùng trong VBA gồm: Toán tử And - toán tử Not và toán tử Or. Và như thường lệ, mình sẽ giải thích ý nghĩa, sau đó làm các ví dụ để bạn dễ theo dõi hơn.
Toán tử logic là những toán tử được dùng để nối hai biểu thức lại với nhau, và kết quả nó trả về phụ thuộc vào kể quả của hai biểu thức đó. Toán từ này được sử dụng rất nhiều trong các lệnh có kiểm tra điều kiện như If else và vòng lặp.
1. Toán tử AND trong VBA
Toán tử AND sẽ trả về true nếu cả hai vế đều true, và false nếu một trong hai vế false.
A AND B
Kết quả trả về:
Bài viết này được đăng tại [free tuts .net]
- true nếu A và B đều true
- false nếu A false hoặc B false hoặc cả hai đều false.
Ví dụ: Hãy xem chương trình dưới đây.
Dim score1 As Integer, score2 As Integer, result As String score1 = Range("A1").Value score2 = Range("B1").Value If score1 >= 60 And score2 > 1 Then result = "pass" Else result = "fail" End If Range("C1").Value = result
Chương trình sẽ so sánh hai giá trị ở A1 và B1 và in quả so sánh ở ô C1.
Như bạn thấy, vì A1 = 80, B1 = 1 nên:
- score1 >= 60 trả về false
- score2 > 1 trả về true
=> điều kiện ở lệnh if bị sai nên lệnh else sẽ chạy, vì vậy C1 nhận giá trị là fail.
2. Toán tử OR trong VBA
Toán tử OR sẽ trả về true nếu một trong hai vế true, ngược lại trả về false khi cả hai vế đều false.
A OR B
Kết quả trả về:
- true nếu A true hoặc B true
- false nếu cả hai A và B đều false
Ví dụ: Thay toán tử AND thành toán tử OR ở ví dụ trên.
Dim score1 As Integer, score2 As Integer, result As String score1 = Range("A1").Value score2 = Range("B1").Value If score1 >= 60 Or score2 > 1 Then result = "pass" Else result = "fail" End If Range("C1").Value = result
Như ta đã phân tích ở phần 1:
- score1 >= 60 trả về false
- score2 > 1 trả về true
Nhưng vì ta sử dụng toán tử Or nên kết quả score1 >= 60 Or score2 > 1
sẽ trả về true, và lệnh if sẽ được chạy nên kết quả in ra là "pass".
3. Toán tử NOT trong VBA
Đây là toán tử phủ định, nó sẽ đảo ngược giá trị của biểu thức đang sư dụng.
Giả sử ta có biểu thưc A có giá trị là true thì:
- NOT A sẽ trả về false
Biểu thức A có giá trị false thì:
- NOT A sẽ trả về true.
Hãy sửa lại ví dụ ở trên như sau:
Dim score1 As Integer, score2 As Integer, result As String score1 = Range("A1").Value score2 = Range("B1").Value If score1 >= 60 And Not score2 = 1 Then result = "pass" Else result = "fail" End If Range("C1").Value = result
Ta thấy:
- score1 >= 60 trả về true
- score2 = 1 trả về true
Nhưng:
- Not score2 = 1 sẽ trả về false
Nên điều kiện score1 >= 60 And Not score2 = 1
sẽ trả về false, và kết quả sẽ in ra là fail.
Trên là ba toán tử logic gồm: Toán tử And, toán tử Or và toán tử Not được sử dụng nhiều nhất trong lập trình VBA nói chung và những lệnh có kiểm tra điều kiện nói riêng. Chúc bạn học tốt.