Hướng dẫn cách viết cấu trúc IF THEN ELSE trong VBA Excel

Chia sẻ bài viết này:

Trong lập trình nói chung, cấu trúc xét tính logic Đúng – Sai của 1 vấn đề rất hay được sử dụng. Giống như việc sử dụng hàm IF trong Excel thì trong VBA chúng ta cũng có cấu trúc IF riêng. Trong bài viết này các bạn hãy cùng Học Excel Online tìm hiểu cách viết cấu trúc IF THEN ELSE trong VBA Excel nhé.

Cách viết cấu trúc IF dạng đơn giản

Cấu trúc IF để xét tính logic Đúng / Sai của 1 vấn đề, do đó thường gồm:

  • Nếu mệnh đề đúng (thỏa mãn) thì xảy ra điều gì
  • Nếu mệnh đề không đúng (không thỏa mãn) thì xảy ra điều gì

Cấu trúc đơn giản của IF là chỉ xét trong trường hợp mệnh đề đúng:

Từ khóa của cấu trúc IF gồm:

IFThen                     Nếu mệnh đề trong IF là đúng thì

…                             Câu lệnh được thực hiện

End If                             Kết thúc cấu trúc

Trường hợp mệnh đề không đúng sẽ không có gì xảy ra.

Cấu trúc này còn có thể được viết rút gọn như sau:

IF + Mệnh đề + Then + Câu lệnh thực thi khi mệnh đề đúng (viết trên cùng 1 dòng)

Dạng đơn giản của cấu trúc IF thường dùng để xét các mệnh đề ngắn, đơn giản, tại đó chỉ quan tâm tới khả năng xảy ra kết quả đúng của mệnh đề

Ví dụ:

Xét xem giá trị tại ô A1 có phải là lớn hơn 5 không. Nếu lớn hơn 5 thì trả về giá trị Đúng tại ô B1 (không làm gì nếu giá trị không lớn hơn 5)

Sub KiemTraGiaTri()

If Range(“A1”).Value > 5 Then

Range(“B1”).Value = “Đúng”

End If

End Sub

Cách viết cấu trúc IF đầy đủ

Cấu trúc đầy đủ của IF là bao gồm cả trường hợp mệnh đề đúng và không đúng.

Cách viết như sau:

Ở cấu trúc này xuất hiện thêm từ khóa Else để xét trường hợp mệnh đề không đúng (không thỏa mãn)

Ví dụ:

Xét xem giá trị tại ô A1 có phải là lớn hơn 5 không. Nếu lớn hơn 5 thì trả về giá trị “Đúng” tại ô B1, nếu không lớn hơn 5 thì trả về giá trị “Sai” tại ô B1

Sub KiemTraGiaTri()

If Range(“A1”).Value > 5 Then

Range(“B1”).Value = “Đúng”

Else

Range(“B1”).Value = “Sai”

End If

End Sub

Cách viết cấu trúc IF lồng nhau trong VBA

Khi xét những vấn đề có logic phức tạp, chúng ta không thể chỉ dùng 1 lần If, mà phải lồng ghép nhiều lần If trong 1 cấu trúc. Việc này giống như viết các hàm If lồng nhau trong 1 công thức Excel vậy. Tuy nhiên trong VBA sẽ thể hiện cấu trúc này như sau:

  • Mệnh đề đầu tiên sẽ viết bình thường
  • Từ mệnh đề thứ 2 sẽ viết với ElseIf chứ không phải chỉ có If, và viết trước từ khóa Else
  • Các mệnh đề khác sẽ viết giống với mệnh đề thứ 2
  • Cuối cùng khi tất cả các mệnh đề đều không thỏa mãn thì sẽ xét tại Else
  • Kết thúc toàn bộ cấu trúc chỉ cần 1 lần End If

Cách viết này sẽ gọn hơn và các mệnh đề If có mối quan hệ nối tiếp nhau, sẽ thực hiện lần lượt theo từng mệnh đề chứ không thực hiện tất cả các mệnh đề.

  • Mệnh đề nào đúng sẽ dừng lại ở mệnh đề đó.
  • Chỉ khi mệnh đề trước sai thì mới xét tiếp mệnh đề sau.

Ví dụ:

Viết lệnh trong VBA để xét thưởng cho nhân viên An theo bảng tính trên:

Cách làm:

Dựa vào giá trị ở ô B2 để xét mệnh đề so sánh giá trị ô B2 với các mức doanh thu. Nếu thỏa mãn sẽ trả về giá trị ở ô C2 là các mức thưởng

Sub XetThuong()

If Range(“B2”).Value > 500 Then             ‘Xét giá trị B2 > 500 trước

Range(“C2”).Value = 200

ElseIf Range(“B2”).Value > 300 Then    ‘Xét giá trị B2 > 300 sau, trường hợp B2 > 500 đã xét trước đó nên trường hợp này chỉ là B2 > 300 và B2 <= 500

Range(“C2”).Value = 100

Else

Range(“C2”).Value = 0

End If

End Sub

Hy vọng qua bài viết này các bạn đã có thể biết cách sử dụng cấu trúc IF trong lập trình VBA. Đây là cấu trúc rất quan trọng và thường xuyên được sử dụng trong lập trình VBA.

Ngoài ra các bạn có thể tìm hiểu thêm các bài viết sau:

Hướng dẫn sử dụng vòng lặp For.. Next trong VBA

Hướng dẫn thay đổi cấu trúc của mảng trong VBA

Hướng dẫn cách viết code với đối tượng Worksheet trong VBA Excel


Chia sẻ bài viết này: