Trong VBA Excel, hàm IF được sử dụng khi bạn muốn kiểm tra một kết quả theo một hoặc nhiều điều kiện cho trước. Khi điều điều kiện đúng, lệnh nhánh đúng sẽ được thực thi hoặc nếu sai, lệnh nhánh sai sẽ được thực thị.
Cách sử dụng hàm IF trong VBA Excel
Sẽ có 2 dạng lệnh IF bạn sẽ gặp trong VBA là:
IF đơn: chỉ có một điều kiện
IF nhiều điều kiện: có nhiều hơn 1 điều kiện.
1) Hàm IF đơn
Cú pháp:
Else END IF
Chú thích cú pháp:
END IF: kết thúc lệnh cho một hàm IF. 💡 Mỗi hàm IF sẽ kèm theo một END IF.
Ví dụ: Kiểm tra số nhập từ InputBox lớn hay nhỏ hơn 0.
Sub kiemtra_soduong() Dim so As Integer x = InputBox("Nhao so", "So sanh", 0) MsgBox "So vua nhap la so lon hon hoac bang 0" Else MsgBox "So vua nhap la so nhỏ hơn 0" End If End Sub2) Hàm IF nhiều điều kiện
Khi dùng hàm IF trong Excel, khi muốn so sánh nhiều điều kiện chúng ta phải sử dụng nhiều câu lệnh IF lồng vào ở điều kiện đúng hoặc sai. Nhưng trong VBA, các bạn có thể sử dụng ELSEIF để tạo thêm một điều kiện so sánh.
💡 Tuy bạn có thể tạo nhiều ELSEIF nhưng không nên tạo quá nhiều vì sẽ ảnh hướng tới hiệu suất. Thay vào đó bạn có thể sử dụng hàm Switch trong VBA.
Cú pháp
… Else End If
Ví dụ: So sánh số nhập từ InputBox với 0
Sub kiemtra_so() Dim so As Integer x = InputBox("Nhao so", "So sanh", 0) If x = 0 Then MsgBox "So vua nhap la so 0" MsgBox "So vua nhap lon hon 0" Else MsgBox "So vua nhap nho hon 0" End If End Sub3) Cách áp dụng hàm IF VBA vào Excel
Ví dụ 1: Sử dụng điều kiện IF đơn không ELSE
Sử dụng lệnh IF đơn không ELSE khi bạn chỉ muốn kiểm tra điều kiện đúng thì thoát chương trình mà không cần kiểm tra đến điều kiện sai.
Ví dụ: Kiểm tra số nhập vào từ InputBox và hiển thị ra MsgBox nếu số nhập là 5.
Sub kiem_tra_so_5() Dim so As Integer so = InputBox("Nhao so", "kiem_tra_so_5", 0) If so = 5 Then MsgBox "Ban vua nhap so 5" Exit Sub End If MsgBox "Ban vua nhap so khac 5" End SubVí dụ 2: Kiểm tra tháng nhập vào có bao nhiêu ngày
Khi điều kiện tháng đã đúng thì sẽ kiểm tra tiếp các điều kiện:
Nếu tháng đó là tháng 1 hoặc 3, 5, 7, 8, 10, 12 thì tháng có 31 ngày.
Nếu là tháng 2 thì chỉ có 28 ngày ( nếu năm nhuận sẽ 29).
Còn lại thì tháng sẽ có 30 ngày.
👉 Như vậy, ví dụ này sẽ cần 2 hàm IF: 1 hàm sẽ kiểm tra nhập tháng hợp lệ và một hàm sẽ kiểm tra tháng nhập là tháng mấy.
💡 Để rút ngắn đoạn lệnh khi so sánh nhiều giá trị trong một điều kiện, bạn có thể sử dụng các lệnh logic như:
AND: Sử dụng khi bạn muốn ràng buộc nhiều điều kiện với nhau. Chỉ đúng khi tất cả điều kiện đều đúng.
OR: Sử dụng khi bạn chỉ cần 1 điều kiện đúng.
✅ Và sau khi phân tích, bạn sẽ có một hàm kiểm tra số ngày của tháng như sau:
Sub so_ngay_cua_thang() Dim thang As Integer thang = InputBox("Nhap thang", "So ngay cua thang", 0) If thang = 1 Or thang = 3 Or thang = 5 Or thang = 7 Or thang = 8 Or thang = 10 Or thang = 12 Then MsgBox "Thang " & thang & " co 31 ngày" ElseIf thang = 2 Then MsgBox "Thang " & thang & " co 28 ngày" Else MsgBox "Thang " & thang & " co 30 ngày" End If Else MsgBox "Thang khong hop le" End If End SubVí dụ 3: Nhập nhanh ngày tháng bằng VBA
Để thực hiện được ví dụ này sẽ cần phải các bước như:
Tạo hàm Sub Worksheet_Change(ByVal Target As Range) trong VBA Sheet để bắt sự kiện thay đổi. Mỗi khi có sự thay đổi tác động đến Cells thì sự kiện này sẽ thực thi.
Xác định Range bắt sự kiện. Vì Range của Excel rất rộng nên các bạn chỉ nên bắt sự kiện thay đổi tại một hàng hoặc cột.
💡 Lưu ý: Nếu bạn muốn bắt sử kiện Worksheet_Change ở Sheet nào thì bạn phải tạo sự kiện ở Sheet đó.
Nhập số 0 hoặc thoát Cells sẽ ghi thời gian hiện tại.
Nhập số <99 để tính ngày hiện tại + với số nhập.
Sub Worksheet_Change(ByVal Target As Range) Dim xrng As Range Dim chuoi As String On Error GoTo Err Set xrng = Range("A:A") If Not Application.Intersect(xrng, Range(Target.Address)) Is Nothing Then If Range(Target.Address).Value = 0 Then Range(Target.Address) = Now() Exit Sub End If End If Err: 'thoat loi End SubOK! Như vậy là bạn đã tìm hiểu qua về cách sử dụng hàm IF trong VBA Excel. Bạn hãy làm chủ hàm IF cả trong Excel lẫn VBA vì nó rất quan trọng. Hàm IF sẽ giúp bạn giải quyết rất nhiều khi giải quyết vấn đề về số liệu bẳng Excel.