HƯỚNG DẪN ĐẦY ĐỦ CÂU LỆNH IF TRONG VBA

Câu lệnh If hay hàm If trong Excel vốn đã rất quen thuộc với nhiều ứng dụng. Tương tự như vậy đối với VBA Excel. Học Excel Online sẽ trình bày đầy đủ bộ hướng dẫn câu lệnh If VBA trong bài viết này

Bảng hướng dẫn nhanh

Description Format Example
If Then If [điều kiện đúng] Then
    [code được thực thi]
End If
If score = 100 Then
       Debug.Print “Perfect”
End If
If Else If [điều kiện đúng] Then
    [code được thực thi]
Else
  [code được thực thi]
End If
If score = 100 Then
       Debug.Print “Perfect”
Else
       Debug.Print “Try again”
End If
If ElseIf If [điều kiện 1 đúng] Then
   [code được thực thi]
ElseIf [điều kiện 2 đúng] Then
   [code được thực thi]
End If
If score = 100 Then
       Debug.Print “Perfect”
ElseIf score > 50 Then
       Debug.Print “Passed”
ElseIf score <= 50 Then
       Debug.Print “Try again”
End If
Else and ElseIf
(Else must come
after ElseIf’s)
If [condition 1 is true] Then
      [code được thực thi]
ElseIf [condition 2 is true] Then
      [code được thực thi]
Else
      [code được thực thi]
End If
If score = 100 Then
       Debug.Print “Perfect”
ElseIf score > 50 Then
       Debug.Print “Passed”
ElseIf score > 30 Then
       Debug.Print “Try again”
Else
       Debug.Print “Yikes”
End If
If without Endif
(One line only)
If [condition is true] Then [do something] If value <= 0 Then value = 0

 Đoạn mã sau đây cho thấy một ví dụ đơn giản về việc sử dụng câu lệnh If VBA :

1-Hướng dẫn đầy đủ câu kệnh If VBA
1-Hướng dẫn đầy đủ câu kệnh If VBA

Câu lệnh IF VBA

Như đã được trình bày thì Hàm If trong Excel là một hàm rất thông dụng và được ứng dụng rất nhiều. Còn đối với IF trong VBA để kiểm tra kết quả theo một hoặc nhiều điều kiện cho trước khi mã chạy. 

Ví dụ: Bạn muốn biết những học sinh có điểm lớn hơn 70, bạn sẽ sử dụng câu lệnh IF để kiểm tra từng học sinh và xuất ra kết quả. 

Định dạng câu lệnh If – then trong VBA

Định dạng của câu lệnh If Then như sau:

2-Hướng dẫn đầy đủ câu kệnh If VBA
2-Hướng dẫn đầy đủ câu kệnh If VBA

Bất cứ khi nào sử dụng câu lệnh If Then thì phải sử dụng End If phù hợp. Khi điều kiện đánh giá là true, các dòng ở giữa If then và End If sẽ được xử lý.

3-Hướng dẫn đầy đủ câu kệnh If VBA
3-Hướng dẫn đầy đủ câu kệnh If VBA

Để làm mã dễ đọc, thụt lề các dòng ở giữa như trên.

Thụt lề các dòng giữa If và End If

Thụt lề là di chuyển các dòng mã sang bên phải, giữa các câu lệnh bắt đầu và kết thúc như:

Sub… End Sub
If then… End If
If then… ElseIf… Else… Endif
For… Next
Do While… Loop
Select Case… End Case

Để thụt lề mã, đánh dấu các dòng để thụt lề và nhấn phím Tab. Nhấn Shift + Tab sẽ si chuyển sang trái. Ngoài ra có thể sử dụng biểu tượng trên thanh công cụ Visual Basic để thụt lề :

4-Hướng dẫn đầy đủ câu kệnh If VBA
4-Hướng dẫn đầy đủ câu kệnh If VBA

Ví dụ đơn giản If then

Đoạn mã sau xuất ra tên của tất cả học sinh có điểm trên 50 bằng tiếng Pháp.

5-Hướng dẫn đầy đủ câu kệnh If VBA
5-Hướng dẫn đầy đủ câu kệnh If VBA

Kết quả:

Bryan Snyder
Juanita Moody
Douglas Blair
Leah Frank
Monica Banks

Kiểm tra ví dụ này với các dấu “>” để xem kết quả thay đổi.

Sử dụng điều kiện với câu lệnh VBA

Đoạn giữa từ khóa If và Then được gọi là điều kiện. Một điều kiện là một câu lệnh đánh giá đúng hoặc sai. Chúng chủ yếu được sử dụng với các câu lệnh Loop và If. Khi tạo một điều kiện có thể sử dụng các ký hiệu  như>, <, <>,> =, <=, =.

Ví dụ:

Điều kiện Điều này đúng khi
x <5 x nhỏ hơn 5
x <= 5 x nhỏ hơn hoặc bằng 5
x> 5 x lớn hơn 5
x> = 5 x lớn hơn hoặc bằng 5
x = 5 x bằng 5
x <> 5 x không bằng 5
x> 5 And x <10 x lớn hơn 5 VÀ x nhỏ hơn 10
x = 2 Or x> 10 x bằng 2 HOẶC x lớn hơn 10
Vùng dữ liệu (“A1”) = “John” Ô A1 chứa văn bản “John”
Vùng dữ liệu (“A1”) <> “John” Ô A1 không chứa văn bản “John”

Bạn có thể nhận thấy x = 5 như một điều kiện và đừng nhầm lẫn điều này với x = 5 khi được sử dụng như một phép gán.

Sự khác biệt giữa dấu “=” trong phép gán và điều kiện:

Sử dụng “=” Loại câu lệnh Ý nghĩa
Loop Until x = 5 Condition X có bằng 5 không
Do While x = 5 Condition X có bằng 5 không
If x = 5 Then Condition X có bằng 5 không
For x = 1 To 5 Assignment Đặt giá trị của x thành 1, sau đó thành 2, v.v.
x = 5 Assignment Đặt giá trị của x thành 5
b = 6 = 5 Assignment and Condition Gán b cho kết quả của điều kiện 6 = 5
x = MyFunc(5,6) Assignment Gán x cho giá trị trả về từ hàm

Mục cuối của bảng hiển thị một câu lệnh có hai dấu “=”, dấu đầu tiên là phép hán và dấu còn lại là điều kiện. 

Bất kỳ câu lệnh nào cũng bắt đầu với một biến và dấu bằng phía sau :

[variable] [=] [evaluate this part]

Bất kỳ điều gì bên phải dấu bằng sẽ được đánh giá và kết quả sẽ đặt vào biến bên trái. Ví dụ:

 [x] [=] [5]
[b] [=] [6 = 5]
[x] [=] [MyFunc (5,6)]

Sử dụng ElseIf với câu lệnh IF

Câu lệnh ElseIf cho phép chọn lọc từ nhiều tùy chọn khác nhau. Trong ví dụ sau, chúng ta in cho các nhãn hiệu nằm trong vùng dữ liệu Distinction hoặc High Distinction.

6-Hướng dẫn đầy đủ câu kệnh If VBA
6-Hướng dẫn đầy đủ câu kệnh If VBA

Thứ tự rất quan trọng. Điều kiện được kiểm tra trước.

  • Nếu đúng thì “High Distinction” được in ra và câu lệnh If  kết thúc.
  • Nếu nó sai thì mã sẽ chuyển đến ElseIf tiếp theo và kiểm tra điều kiện của nó.

Hoán đổi giữa If và ElseIf t thì mã như sau:

7-Hướng dẫn đầy đủ câu kệnh If VBA
7-Hướng dẫn đầy đủ câu kệnh If VBA

Trước tiên kiểm tra giá trị lớn hơn 75. Giá trị High Distinction sẽ không được in ra bởi vì nếu một giá trị lớn hơn 85 thì sẽ không khớp với câu lệnh IF.

Để tránh những vấn đề này  nên sử dụng hai điều kiện và 2 câu lệnh loại bỏ sự nhầm lẫn. Ví dụ dưới đây cho thấy cách sử dụng chúng. 

8-Hướng dẫn đầy đủ câu kệnh If VBA
8-Hướng dẫn đầy đủ câu kệnh If VBA

Dựa trên ví dụ này bạn có thể sử dụng bao nhiêu câu lệnh ElseIF tùy thích.

Sử dụng câu lệnh Else với câu lệnh IF

Câu lệnh Else được sử dụng với ý nghĩa như “nếu không có điều kiện nào đúng” hoặc “Mọi thứ khác”. Trong ví dụ truocs không có câu lệnh để in các dòng mã bị lỗi, chúng ta có thể thêm điều này bằng cách sử dụng lệnh Else:

9-Hướng dẫn đầy đủ câu kệnh If VBA
9-Hướng dẫn đầy đủ câu kệnh If VBA

Tiếp theo viết mã đi qua các dữ liệu mẫu và xuất ra học sinh và phân loại chúng (classification).

10-Hướng dẫn đầy đủ câu kệnh If VBA
10-Hướng dẫn đầy đủ câu kệnh If VBA

Kết quả

11-Hướng dẫn đầy đủ câu kệnh If VBA
11-Hướng dẫn đầy đủ câu kệnh If VBA

Sử dụng các toán tử logic với câu lệnh If VBA

Như các bạn đã biết về các hàm logic trong Excel thì hôm nay Học Excel Online sẽ hướng dẫn sử dụng các toán tử logic với câu lệnh If VBA
Có thể có nhiều hơn một điều kiện trong câu lệnh IF VBA nếu sử dụng các từ khóa AND hoặc OR. Nó hoạt động tương tự nhưng sử dụng trong tiếng Anh.

Xem lại dữ liệu mẫu .Bây giờ chúng ta muốn in tất cả các học sinh đạt trên 50 đến 80 điểm. Sử dụng AND  để thêm một điều kiện bổ sung. Đoạn mã có nội dung: nếu mark >=50 VÀ nhỏ hơn 75 thì in tên học sinh.

12-Hướng dẫn đầy đủ câu kệnh If VBA
12-Hướng dẫn đầy đủ câu kệnh If VBA

Kết quả:

Douglas Blair

Leah Frank

Monica Banks

Trong ví dụ tiếp theo, chúng ta muốn những học sinh đã học Lịch sử (History) hoặc Tiếng Pháp (France). Vì vậy, trong trường hợp này như sau:  nếu học sinh học Lịch sử HOẶC nếu học sinh học tiếng Pháp:

13-Hướng dẫn đầy đủ câu kệnh If VBA
13-Hướng dẫn đầy đủ câu kệnh If trong VBA

Kết quả

Bryan History
Bradford French
Douglas History
Ken French
Leah French
Rosalie History
Jackie History

Sử dụng IF AND

AND hoạt động như sau:

Condition 1 Condition 2 Result
TRUE TRUE TRUE
TRUE FALSE FALSE
FALSE TRUE FALSE
FALSE FALSE FALSE


Có thể thấy AND chỉ đúng khi tất cả các điều kiện đều đúng

Sử dụng IF OR

Condition 1 Condition 2 Result
TRUE TRUE TRUE
TRUE FALSE TRUE
FALSE TRUE TRUE
FALSE FALSE FALSE

Nhận thấy là OR chỉ sai khi tất cả các điều kiện đều sai.

Kết hợp AND và OR với nhau có thể làm cho mã khó đọc và dẫn đến lỗi. Sử dụng dấu ngoặc đơn có thể làm cho các điều kiện rõ ràng hơn.

14-Hướng dẫn đầy đủ câu kệnh If VBA
14-Hướng dẫn đầy đủ câu kệnh If VBA

Sử dụng IF NOT

Ngoài ra còn có một toán tử NOT. Điều này trả về kết quả ngược lại với điều kiện.

Condition Result
TRUE FALSE
FALSE TRUE

 

Tương đương với hai dòng mã sau đây:

15-Hướng dẫn đầy đủ câu kệnh If VBA
15-Hướng dẫn đầy đủ câu kệnh If  trong VBA

16-Hướng dẫn đầy đủ câu kệnh If VBA
16-Hướng dẫn đầy đủ câu kệnh If VBA

Đặt điều kiện trong ngoặc đơn làm cho mã dễ đọc hơn:

17-Hướng dẫn đầy đủ câu kệnh If VBA
17-Hướng dẫn đầy đủ câu kệnh If VBA

Cách sử dụng phổ biến của Not là kiểm tra xem đối tượng đã được thiết lập hay chưa. Lấy worksheet làm ví dụ:

18-Hướng dẫn đầy đủ câu kệnh If VBA
18-Hướng dẫn đầy đủ câu kệnh If VBA

Chúng ta sẽ kiểm tra mySheet là hợp lệ trước khi sử dụng nó. Chúng tôi có thể kiểm tra như sau:

19-Hướng dẫn đầy đủ câu kệnh If VBA
19-Hướng dẫn đầy đủ câu kệnh If VBA

 Sử dụng Not with Nothing:

20-Hướng dẫn đầy đủ câu kệnh If VBA
20-Hướng dẫn đầy đủ câu kệnh If VBA

Nếu hơi khó hiểu, có thể sử dụng dấu ngoặc đơn như thế này:

21-Hướng dẫn đầy đủ câu kệnh If VBA
21-Hướng dẫn đầy đủ câu kệnh If VBA

Hàm IIF trong VBA

VBA có một hàm tương tự như hàm If trong Excel. Trong Excel, bạn sẽ thường sử dụng hàm If như sau:

= IF (F2 = ””, ””, F1 / F2)

Định dạng là:

=If(condition, action if true, action if false).

VBA có câu lệnh IIF hoạt động theo cách tương tự. 

Hãy xem một ví dụ. Trong đoạn mã sau, sử dụng IIF để kiểm tra giá trị của biến val. Nếu giá trị lớn hơn 10, chúng ta in true nếu không, chúng ta in false:

22-Hướng dẫn đầy đủ câu kệnh If VBA
22-Hướng dẫn đầy đủ câu kệnh If VBA

Trong ví dụ tiếp theo, chúng tôi muốn in ra Pass hoặc Fail bên cạnh mỗi học sinh tùy thuộc vào. Trong đoạn mã đầu tiên, chúng tôi sẽ sử dụng câu lệnh VBA If bình thường để thực hiện việc này:

23-Hướng dẫn đầy đủ câu kệnh If VBA
23-Hướng dẫn đầy đủ câu kệnh If  trong VBA

Trong đoạn mã tiếp theo, chúng ta sẽ sử dụng hàm IIF.  Có thể thấy rằng mã gọn gàng hơn :

24-Hướng dẫn đầy đủ câu kệnh If VBA
24-Hướng dẫn đầy đủ câu kệnh If VBA

Sử dụng IIF lồng nhau

Bạn cũng có thể lồng các câu lệnh IIF như trong Excel.  Bây giờ chúng tôi muốn in Distinction Pass hoặc Fail cho mỗi học sinh.

Sử dụng VBA bình thường:

25-Hướng dẫn đầy đủ câu kệnh If VBA
25-Hướng dẫn đầy đủ câu kệnh If VBA

Sử dụng IIF lồng nhau:

26-Hướng dẫn đầy đủ câu kệnh If VBA
26-Hướng dẫn đầy đủ câu kệnh If trong VBA

Sử dụng IIF lồng nhau là hữu ích trong những trường hợp đơn giản như thế này. Mã này dễ đọc và do đó không có khả năng xảy ra lỗi.

Những điều cần chú ý

Điều quan trọng cần hiểu là hàm IIF luôn đánh giá cả phần Đúng và Sai của câu lệnh bất kể điều kiện là gì.

Trong ví dụ sau, chúng ta muốn chia cho các marks khi nó không bằng 0. Nếu nó bằng 0, chúng ta muốn trả về 0.

27-Hướng dẫn đầy đủ câu kệnh If VBA
27-Hướng dẫn đầy đủ câu kệnh If VBA

Tuy nhiên, khi marks bằng 0, mã sẽ đưa ra lỗi “Divide by 0”. Điều này là do nó đánh giá cả câu lệnh True và False. Câu lệnh False ở đây tức là (60 / Marks) đánh giá là có lỗi vì marks bằng 0.

Nếu chúng ta sử dụng câu lệnh IF thông thường:

28-Hướng dẫn đầy đủ câu kệnh If VBA
28-Hướng dẫn đầy đủ câu kệnh If VBA

Điều này có nghĩa nếu có các hàm True và False thì cả hai sẽ được thực thi. Vì vậy IIF sẽ chạy cả hai hàm mặc dù chỉ có một giá trị trả về. Ví dụ:

29-Hướng dẫn đầy đủ câu kệnh If VBA
29-Hướng dẫn đầy đủ câu kệnh If VBA

IF so với IIF

IIF  ngắn gọn hơn so với IF. Tuy nhiên, nếu các điều kiện trở nên phức tạp, bạn nên sử dụng câu lệnh If bình thường. Một nhược điểm của IIF là nó không được nhiều người biết đến.

Cũng như chúng ta đã thảo luận trong phần trước, IIF luôn đánh giá phần True và False vì vậy nếu bạn đang xử lý nhiều dữ liệu thì câu lệnh IF sẽ nhanh hơn. Quy tắc chung sử dụng IIF khi nó sẽ dễ đọc và không yêu cầu các lệnh gọi hàm. Đối với các trường hợp phức tạp hơn, hãy sử dụng câu lệnh If thông thường.

Sử dụng Select Case

Câu lệnh Select Case là một cách thay thế If với nhiều ElseIf’s. Câu lệnh này được sử dụng phổ biến trong hầu hết các ngôn ngữ lập trình được gọi là câu lệnh Switch. Ví dụ Java, C #, C ++ và Javascript đều có câu lệnh switch.

Định dạng

30-Hướng dẫn đầy đủ câu kệnh If VBA
30-Hướng dẫn đầy đủ câu kệnh If VBA

Ví dụ AddClass ở trên và viết lại bằng cách sử dụng câu lệnh Select Case.

31-Hướng dẫn đầy đủ câu kệnh If VBA
31-Hướng dẫn đầy đủ câu kệnh If VBA

Đây  mã tương tự sử dụng câu lệnh Select case. Bạn sẽ nhận thấy là chúng tôi sử dụng “Case 85 to 100” rather than” thay vì “dấu> = 85 Và dấu <= 100”.

32-Hướng dẫn đầy đủ câu kệnh If VBA
32-Hướng dẫn đầy đủ câu kệnh If  trong VBA

Sử dụng IS

Có thể viết lại câu lệnh select theo định dạng giống như ElseIf ban đầu,  sử dụng Is with Case.

33-Hướng dẫn đầy đủ câu kệnh If VBA
33-Hướng dẫn đầy đủ câu kệnh If  trong VBA

Bạn có thể sử dụng Is để kiểm tra nhiều giá trị. Trong đoạn mã sau, chúng tôi đang kiểm tra xem các dấu bằng 5, 7 hoặc 9.

34-Hướng dẫn đầy đủ câu kệnh If VBA
34-Hướng dẫn đầy đủ câu kệnh If trong VBA

Bài hướng dẫn câu lệnh If VBA hoàn chỉnh của Học Excel Online đã thỏa mãn các bạn chưa? Hãy cmt xuống phía dưới những thắc mắc của bạn để được giải đáp ngay lập tức, không chỉ về bài viết này mà cả những nội dung liên quan đến VBA Excel. Xin chào và hẹn gặp lại!


Tác giả: dtnguyen (Nguyễn Đức Thanh)

· · ·

Khóa học mới xuất bản