Câu lệnh IF THEN cơ bản trong VBA Excel

Câu lệnh IF THEN thực hiện có điều kiện một nhóm hành động, tùy thuộc vào giá trị của một biểu thức. Chúng tuân theo một định dạng nhất quán và có thể dự đoán được. Hãy xem qua cú pháp cho dạng cơ bản nhất của câu lệnh IF THEN:

	If [điều kiện là đúng] THEN
[làm việc gì đó]
End If
Đây là dạng đơn giản nhất của câu lệnh IF THEN. Điều tối quan trọng là bạn phải nhớ đặt từ khóa End If ở cuối câu lệnh If của mình. Mở Visual Basic Editor (Alt+F11) của bạn Insert Module và nhập ví dụ sau:
Sub IF_THEN_DEMO()
If Range("A1") = "" Then
Range("B1") = "A1 is blank"
End If
End Sub
Ví dụ này kiểm tra xem giá trị trong ô A1 có trống hay không. Nếu đúng, dòng chữ "A1 is blank" sẽ xuất hiện trong ô B1. Câu lệnh IF THEN ELSE Câu lệnh IF THEN ELSE để kiểm tra xem điều kiện có được đáp ứng hay không và nó cho macro của bạn biết phải làm gì nếu điều kiện không được đáp ứng. Nó có dạng như sau:
If [điều kiện là đúng] then
[làm việc gì đó]
else
[làm việc gì khác]
End If
Về cơ bản, nếu điều kiện mà bạn đã kiểm tra không đúng, các hành động trong phần [làm việc gì khác] sẽ được thực hiện. Bây giờ sửa đổi ví dụ ở trên để minh họa cách phần ELSE được thực hiện:
Sub IF_THEN_DEMO ()
If Range("A1") > 10 Then
Range("B1") = "A1 lớn hơn 10"
else
Range ("B1") = "A1 KHÔNG lớn hơn 10"
End If
End Sub
Ví dụ này xem xét giá trị trong ô A1. Nếu một số lớn hơn 10 (>) được nhập vào ô đó, ô B1 sẽ thay đổi để cho bạn biết như vậy. Nếu nó không lớn hơn 10, ô B1 sẽ cho bạn biết giá trị trong ô A1 không lớn hơn 10. Bạn thay đổi với các số khác nhau trong ô A1 và tự mình xem sự khác biệt. Chỉ cần thay đổi số trong ô A1, sau đó chạy macro IF_THEN_DEMO bằng cách nhấn F5 từ trình chỉnh sửa VBA của bạn. Đến đây bạn có thể hình dung câu lệnh IF THEN cũng tương tự hàm if trong excel phải không nào?
IF THEN ELSEIF (Câu lệnh If lồng)Hãy thêm một lớp phức tạp nữa vào các câu lệnh IF của chúng ta: câu lệnh ELSEIF. Các câu lệnh ELSEIF cho phép bạn kiểm tra một loạt các điều kiện trong cùng một khối "IF THEN". Nó trông như thế này:
If [điều kiện 1 là đúng] Then
[làm việc gì đó]
ElseIf [Điều kiện 2 là đúng] Then
[làm việc gì khác]
ElseIf [Điều kiện 3 là đúng] Then
[làm việc gì khác]
End If
Bạn có thể có bao nhiêu ELSEIF tùy thích (tất nhiên là phải có lý do), có nghĩa là bạn có thể kiểm tra một loạt các điều kiện khác nhau, như sau:
Sub IF_THEN_DEMO()
If Range("A2") > 10 Then
Range("B2") = "A2 lớn hơn 10"
ElseIf Range("A2") > 5 Then
Range("B2") = "A2 lớn hơn 5"
ElseIf IsEmpty(Range("A2")) Then
Range("B2") = "A2 is empty"
End If
End Sub
Ví dụ này kiểm tra ba điều kiện từ trên xuống dưới, nhưng nó chỉ đi xuống nhánh [làm việc gì đó] một lần. Ví dụ: giả sử bạn có giá trị là "12" trong ô A2. Số 12 lớn hơn 10 và lớn hơn 5, vì vậy có vẻ như cả hai điều kiện đầu tiên đều được đáp ứng, phải không? Tuy nhiên, vì VBA dừng ở điều kiện đầu tiên đúng , macro sẽ không đi xuống 2 điều kiện còn lại. Khi bạn chạy macro, đầu tiên nó sẽ kiểm tra xem số 12 có lớn hơn 10. Chính vì vậy macro ghi ra "A2 lớn hơn 10" trong ô B2 và nó ngay lập tức nhảy đến dòng End If ở dưới cùng. Nó thậm chí không bao giờ kiểm tra xem giá trị ở A2 có lớn hơn 5 hay không! Đó là một khái niệm rất quan trọng cần nhớ, và nó là một khái niệm mà nhiều lập trình viên thường quên. Nếu giá trị trong ô A2 lớn hơn 5, nhưng nhỏ hơn hoặc bằng 10, macro sẽ đi xuống nhánh thứ hai và báo cáo "A2 lớn hơn 5". Vì VBA kiểm tra các điều kiện tuần tự, chúng tôi thậm chí không cần phải yêu cầu nó xác nhận giá trị cũng nhỏ hơn hoặc bằng 10! Đó là một cách tiết kiệm thời gian nhỏ nhưng tiện dụng. Lưu ý rằng điều kiện thứ ba kiểm tra xem ô A2 có trống không. Lệnh IsEmpty có thể là mới đối với bạn. Đó là một trong nhiều chức năng được tích hợp sẵn mà VBA có để làm cho công việc lập trình vba của bạn trở nên dễ dàng hơn. Chúng ta có thể kết hợp tất cả những điều này lại với nhau không? Câu trả lời là có, bạn có thể bao gồm câu lệnh ELSE khi sử dụng câu lệnh ELSEIF, nhưng câu lệnh ELSE phải đi sau câu lệnh ELSEIF . Đây là cú pháp:
If [điều kiện 1 là đúng] then
[làm việc gì đó]
elseIf [Điều kiện 2 là đúng] then
[làm việc gì khác]
ElseIf [Điều kiện 3 là đúng] then
[làm việc gì khác]
else
[làm việc gì khác]
End If
Thêm một câu lệnh ELSE vào ví dụ trước của chúng ta và nhập "3" vào ô A2.
Sub IF_THEN_DEMO ()
If range("A2")> 10 then
range("B2") = "A2 lớn hơn 10"
ElseIf Range("A2")> 5 then
range("B2") = "A2 lớn hơn 5"
ElseIf IsEmpty (range("A2")) then
Range("B2") = "A2 is empty"
else
range("B2") = "A2 is <= 5 and not empty"
End If
End Sub
Chạy macro với số 3 trong ô A2 và chuỗi trong câu lệnh ELSE sẽ xuất hiện trong ô B2. Các "hành động" ELSE chỉ được thực hiện nếu không có điều kiện nào khác được thỏa mãn. Nói cách khác, nếu không có gì khác đúng, thì điều kiện ELSE được thực hiện. Chú ý, nếu bạn vô tình cố gắng đặt câu lệnh ELSE trước câu lệnh ElseIf bạn sẽ gặp một thông báo lỗi nhỏ của excel. Lúc này bạn chỉ cần click OK và sửa lại cấu trúng câu lệnh If lại cho đúng là được.

No comments :