06/04/2021, 14:51

án tử Logic trong VBA (And - Or - Not) - ự học Excel VBA

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

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ề:

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

logical operator and png

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

logical operator or png

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.

logical operator not png

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.

Trịnh Tiến Mạnh

27 chủ đề

6824 bài viết

Cùng chủ đề
0