Cú pháp:
If điều_kiện Then
' hành động nếu điều kiện đúng
End If
Ví dụ if 1:
so=15
If so >= 0 Then
MsgBox "La so duong"
End If
Ví dụ if 2:
If Range("A1").Value > 100 Then
MsgBox "Giá trị lớn hơn 100"
End If
Cú pháp:
If điều_kiện Then
' hành động nếu đúng
Else
' hành động nếu sai
End If
Ví dụ 1:
so=-5
If so >= 0 Then
MsgBox "La so duong"
Else
MsgBox "La so am"
End If
Ví dụ 2:
If Range("A1").Value >= 50 Then
MsgBox "Đạt yêu cầu"
Else
MsgBox "Chưa đạt yêu cầu"
End If
Cú pháp:
If điều_kiện_1 Then
' hành động 1
ElseIf điều_kiện_2 Then
' hành động 2
Else
' hành động mặc định
End If
Ví dụ:
Dim diem As Integer
diem = Range("B2").Value
If diem >= 8 Then
MsgBox "Xếp loại: Giỏi"
ElseIf diem >= 6.5 Then
MsgBox "Xếp loại: Khá"
ElseIf diem >= 5 Then
MsgBox "Xếp loại: Trung bình"
Else
MsgBox "Xếp loại: Yếu"
End If
Khi một điều kiện đúng, bạn muốn kiểm tra tiếp một điều kiện con bên trong.
Câu lệnh if lồng nhau được ứng dụng rất nhiều khi làm phần mềm bằng Excel.
Ví dụ:
If Range("A1").Value > 0 Then
If Range("B1").Value > 0 Then
MsgBox "Cả A1 và B1 đều dương"
Else
MsgBox "A1 dương nhưng B1 không dương"
End If
Else
MsgBox "A1 không dương"
End If
Khi chỉ có một hành động nhỏ, bạn có thể viết trên 1 dòng:
Cú pháp:
If điều_kiện Then hành_động
Ví dụ:
If Range("A1") = "" Then MsgBox "Ô A1 đang trống"
If Range("A1") > 50 Then MsgBox "OK" Else MsgBox "Not OK"
Lỗi phổ biến Nguyên nhân
Thiếu End If Khi dùng If...Then nhiều dòng mà không kết thúc bằng End If
So sánh sai kiểu dữ liệu Ví dụ: so sánh chuỗi với số ("10" > 5)
Dùng = thay vì == Trong VBA, dùng = để so sánh, không phải == như một số ngôn ngữ khác
Ví dụ: Nếu ô A1 có chữ “Nam” thì tô màu xanh, “Nữ” thì tô màu hồng:
If Range("A1").Value = "Nam" Then
Range("A1").Interior.Color = RGB(0, 255, 0)
ElseIf Range("A1").Value = "Nữ" Then
Range("A1").Interior.Color = RGB(255, 192, 203)
Else
Range("A1").Interior.ColorIndex = xlNone
End If
Tôi ví dụ như sau: bạn viết 1 chương trình xác định số nhập vào là âm hay dương.
Dim so As Integer
so = Val(InputBox("Nhap 1 so:"))
Msgbox so
Msgbox "Neu ban thay so >0 thi la SO DUONG"
Msgbox "Neu ban thay so <0 thi la SO AM"
Bạn xem chương trên đã ổn hay chưa ? nếu hiểu được thì bạn đã tự nhận ra tại sao phải sử dụng câu lệnh if trong VBA Excel.
Nếu [Thu nhập ròng] >=100 tr thì đi du lịch MỸ
* Thu nhập ròng = Tổng thu nhập - Tổng chi phí
Thì [Thu nhập ròng] >=100 tr là điều kiện
Giả sử ta có thu nhập ròng là 200 tr thì điều kiện là 200>=100
Nếu nhìn bằng mắt thường thì ta thấy đã thỏa điều kiện, nhưng làm sao để máy tính (VBA Excel) nó hiểu được điều kiện này đúng, có nghĩa ta viết code làm sao để máy tính nó nhận diện được 200>=100 là đúng.
Ta thử gõ: Msgbox 200>=100 xem kết quả thế nào ?
Máy tính nó đã hiểu được là 200>=100 là TRUE.
Để máy tính làm 1 hành động nào đó khi 200>=100 thì ta phải sử dụng lệnh if vba
if 200>=100 then
Msgbox "DUNG, ban thu xep di du lich nhe !"
end if
* Bạn có nhận ra vấn đề là 200>=100 ta đâu thể biết trước các con số này mà phải lấy từ biến
Dim tongthunhap as Long
Dim tongchiphi as Long
Dim thunhaprong as Long
tongthunhap=400
tongchiphi=200
thunhaprong=tongthunhap-tongchiphi
if thunhaprong>=100 then
Msgbox "DUNG, ban thu xep di du lich nhe !"
end if
Dim tongthunhap as Long
Dim tongchiphi as Long
Dim thunhaprong as Long
Dim dieukiendidulich as Boolean
//
tongthunhap=400
tongchiphi=200
thunhaprong=tongthunhap-tongchiphi
dieukiendidulich = ( thunhaprong>=100 )
if dieukiendidulich then
Msgbox "DUNG, ban thu xep di du lich nhe !"
end if
1=1 là TRUE hay False
1=2 là TRUE hay False
Các toán tử so sánh trong VBA Excel >, <, <>,> =, <=, =.
2>1 là TRUE hay False
Làm sao để VBA trả lời được 1 điều kiện đó TRUE hay False
Cách 1:
Msgbox 1=1
Cách 2:
Dim dk as Boolean
dk=(1=1)
Msgbox dk
Thực tế khi làm phần mềm bằng VBA thì khi đã biết trước là đúng hay sai thì không cần phải
Msgbox 1=1
Đ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”
Khai bao biến
Dim hoten as String
Dim diem as Double
Hoten="Tran A"
diem=8
' Cách xếp loại:
nếu điểm >=8 thì giỏi
nếu diem>=7 và diem<8 thì khá
nếu diem>=5 và diem<7 thì trung bình
nếu diem<5 kém
* in ra câu: "Tran A co xep loai la GIOI"
Tùy vào giá trị của biến diem
Tìm kiếm:
Mệnh đề if trong vba excel sử dụng như thế nào