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é.
Xem nhanh
Cấu trúc IF để xét tính logic Đúng / Sai của 1 vấn đề, do đó thường gồm:
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:
IF … Then 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ấ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
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:
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 đề.
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