befaint
|||||||||||||
- Tham gia
- 6/1/11
- Bài viết
- 14,515
- Được thích
- 19,699
(Danh mục các hàm trong VBA)
4. Hàm logic, cấu trúc lệnh (SELECT CASE, IF-THEN, FOR-NEXT...)
4.1. AND
Trả về kết quả True nếu tất cả các điều kiện đưa vào là True.
4.2. OR
Trả về TRUE nếu cos bất kỳ điều kiện nào là TRUE.
4.3. IF-THEN-ELSE
Trả về một giá trị nếu một điều kiện trả về TRUE hoặc một giá trị khác nếu nó trả về FALSE
Condition(s):
Các điều kiện đưa vào sẽ được xét theo thứ tự được liệt kê (từ trên xuống).
Khi một điều kiện được tìm thấy là đúng, lệnh tương ứng sẽ được thực hiện. Tất cả các điều kiện khác sẽ không được xét nữa.
Result(s): Các kết quả trả về tương ứng với điều kiện thỏa mãn.
Nếu không có điều kiện nào được đáp ứng, thì phần Else của câu lệnh IF-THEN-ELSE sẽ được thực hiện.
Các phần ElseIf và Else là tùy chọn, không bắt buộc
Nếu Result viết cùng một dòng với IF-THEN thì bỏ qua End If
4.4. SELECT CASE
Tương tự cấu trúc lệnh If Then Else, trả về một giá trị nếu một điều kiện trả về TRUE.
Expression: Là một chuỗi hoặc giá trị số. Là giá trị cần so sánh với danh sách các điều kiện.
Condition(s): Các điều kiện được đánh giá theo thứ tự được liệt kê. Khi một điều kiện được tìm thấy là đúng, nó sẽ thực thi lệnh tương ứng và không đánh giá các điều kiện thêm nữa.
Result(s): Các kết quả trả về tương ứng với điều kiện thỏa mãn.
Nếu không có điều kiện nào thỏa mãn, thì phần Else của câu lệnh CASE sẽ được thực thi.
Phần Else là tùy chọn không bắt buộc.
4.5. FOR...NEXT
Vòng lặp duyệt qua biến đếm
counter: Biến đếm của vòng lặp
start: Giá trị đầu tiên của biến đếm
end: Giá trị cuối cùng của biến đếm
increment: Không bắt buộc. Là bước nhảy của biến đếm counter. Nó có thể là một số dương hoặc âm.
Nếu không được chỉ định, thì bước nhảy được mặc định có giá trị =1
statements: Các câu lệnh được thực hiện trong mỗi vòng lặp được duyệt.
4.6. DO WHILE…LOOP
Vòng lặp duyệt qua điều kiện đưa vào
Condition: Điều kiện được xét mỗi khi qua vòng lặp.
Nếu điều kiện được xét trả về True, câu lệnh trong vòng lặp được thực hiện. Nếu điều kiện xét trả về False thì vòng lặp bị chấm dứt.
statements: Các câu lệnh được thực hiện trong mỗi vòng lặp được duyệt.
4.7. WHILE...WEND
Vòng lặp duyệt qua điều kiện đưa vào. Giống cấu trúc lệnh DO WHILE…LOOP
Condition: Điều kiện được xét mỗi khi qua vòng lặp.
Nếu điều kiện được xét trả về True, câu lệnh trong vòng lặp được thực hiện. Nếu điều kiện xét trả về False thì vòng lặp bị chấm dứt.
statements: Các câu lệnh được thực hiện trong mỗi vòng lặp được duyệt.
4.8. SWITCH
Xét một danh sách các biểu thức và trả về giá trị tương ứng cho biểu thức đầu tiên trong danh sách có kết quả TRUE
VarExpr(): Danh sách các biểu thức cần được đánh giá. Chức năng SWITCH đang tìm kiếm biểu thức đầu tiên đánh giá TRUE.
Value: Danh sách các giá trị. Chức năng SWITCH sẽ trả về giá trị tương ứng với biểu thức đầu tiên đánh giá TRUE.
4. Hàm logic, cấu trúc lệnh (SELECT CASE, IF-THEN, FOR-NEXT...)
4.1. AND
PHP:
Conditions_1 And conditions_2 [… And conditions_n]
PHP:
Sub AND_Fn()
Dim bValue As Boolean, i As Long
i = 4
If i > 1 And i < 9 Then
MsgBox "Value is: " & i
End If
End Sub
PHP:
Conditions_1 Or conditions_2 [… Or conditions_n]
PHP:
Sub OR_Fn()
Dim bValue As Boolean, i As Long
i = 4
If i > 3 Or i < 0 Then
MsgBox "Value is: " & i
End If
End Sub
PHP:
If condition_1 Then
result_1
ElseIf condition_2 Then
result_2
...
ElseIf condition_n Then
result_n
Else
result_else
End If
Condition(s):
Các điều kiện đưa vào sẽ được xét theo thứ tự được liệt kê (từ trên xuống).
Khi một điều kiện được tìm thấy là đúng, lệnh tương ứng sẽ được thực hiện. Tất cả các điều kiện khác sẽ không được xét nữa.
Result(s): Các kết quả trả về tương ứng với điều kiện thỏa mãn.
Nếu không có điều kiện nào được đáp ứng, thì phần Else của câu lệnh IF-THEN-ELSE sẽ được thực hiện.
Các phần ElseIf và Else là tùy chọn, không bắt buộc
Nếu Result viết cùng một dòng với IF-THEN thì bỏ qua End If
PHP:
Sub IfThen_Statement_1()
Dim sChk As String, sValue As String
sChk = "A"
If sChk = "A" Then
sValue = "Day la ket qua: " & sChk
End If
MsgBox sValue
End Sub
PHP:
Sub IfThen_Statement_2()
Dim sChk As String, sValue As String
sChk = "A"
If sChk = "A" Then
sValue = "Day la ket qua: " & sChk
ElseIf sChk = "B" Then
sValue = "Day la ket qua: " & sChk
ElseIf sChk = "C" Then
sValue = "Day la ket qua: " & sChk
Else
sValue = "Day la ket qua: " & sChk
End If
MsgBox sValue
End Sub
PHP:
Sub IfThen_Statement_3()
Dim sChk As Integer
sChk = 10
If sChk > 1 Then MsgBox "OK"
End Sub
PHP:
Select Case Expression
Case condition_1
result_1
Case condition_2
result_2
...
Case condition_n
result_n
Case Else
result_else
End Select
Expression: Là một chuỗi hoặc giá trị số. Là giá trị cần so sánh với danh sách các điều kiện.
Condition(s): Các điều kiện được đánh giá theo thứ tự được liệt kê. Khi một điều kiện được tìm thấy là đúng, nó sẽ thực thi lệnh tương ứng và không đánh giá các điều kiện thêm nữa.
Result(s): Các kết quả trả về tương ứng với điều kiện thỏa mãn.
Nếu không có điều kiện nào thỏa mãn, thì phần Else của câu lệnh CASE sẽ được thực thi.
Phần Else là tùy chọn không bắt buộc.
PHP:
Sub CASE_Statement_1()
Dim sChk As Byte, sValue As String
sChk = 1
Select Case sChk
Case 0
sValue = "Day la ket qua dau tien"
Case 1
sValue = "Day la ket qua thu hai"
Case Else
sValue = "Day la ket qua con lai"
End Select
MsgBox sValue
End Sub
PHP:
Sub CASE_Statement_2()
Dim sChk As Long, sValue As String
sChk = 100
Select Case sChk
Case Is < 100
sValue = "Day la ket qua dau tien"
Case Is < 200
sValue = "Day la ket qua thu hai"
Case Else
sValue = "Day la ket qua con lai"
End Select
MsgBox sValue
End Sub
PHP:
Sub CASE_Statement_3()
Dim sChk As Long, sValue As String
sChk = 100
Select Case sChk
Case 1 To 99
sValue = "Day la ket qua dau tien"
Case 100 To 199
sValue = "Day la ket qua thu hai"
Case Else
sValue = "Day la ket qua con lai"
End Select
MsgBox sValue
End Sub
PHP:
Sub CASE_Statement_4()
Dim sChk As String, sValue As String
sChk = "B"
Select Case sChk
Case "A"
sValue = "Day la ket qua dau tien"
Case "B"
sValue = "Day la ket qua thu hai"
Case Else
sValue = "Day la ket qua con lai"
End Select
MsgBox sValue
End Sub
PHP:
FOR counter = start TO end [Step increment]
{...statements...}
NEXT [counter]
counter: Biến đếm của vòng lặp
start: Giá trị đầu tiên của biến đếm
end: Giá trị cuối cùng của biến đếm
increment: Không bắt buộc. Là bước nhảy của biến đếm counter. Nó có thể là một số dương hoặc âm.
Nếu không được chỉ định, thì bước nhảy được mặc định có giá trị =1
statements: Các câu lệnh được thực hiện trong mỗi vòng lặp được duyệt.
PHP:
Sub ForNext_Statement_1()
Dim iCount As Long
For iCount = 1 To 3
MsgBox "iCount is: " & iCount
Next iCount
End Sub
PHP:
Sub ForNext_Statement_2()
Dim iCount As Long
For iCount = 3 To 1 Step -1
MsgBox "iCount is: " & iCount
Next iCount
End Sub
PHP:
Sub ForNext_Statement_3()
Dim iCount1 As Long, iCount2 As Long
For iCount1 = 1 To 3
For iCount2 = 4 To 5
MsgBox "Result is: " & iCount1 & " - " & iCount2
Next iCount2
Next iCount1
End Sub
PHP:
Do While condition
{...statements...}
Loop
Condition: Điều kiện được xét mỗi khi qua vòng lặp.
Nếu điều kiện được xét trả về True, câu lệnh trong vòng lặp được thực hiện. Nếu điều kiện xét trả về False thì vòng lặp bị chấm dứt.
statements: Các câu lệnh được thực hiện trong mỗi vòng lặp được duyệt.
PHP:
Sub DoWhile_Statement_1()
Dim iCount As Long
iCount = 1
Do While iCount < 5
MsgBox iCount
iCount = iCount + 1
Loop
End Sub
PHP:
Sub DoWhile_Statement_2()
Dim iCount1 As Long, iCount2 As Long
iCount1 = 1
Do While iCount1 < 5
iCount2 = 6
Do While iCount2 < 8
MsgBox "Result is: " & iCount1 & " - " & iCount2
iCount2 = iCount2 + 1
Loop
iCount1 = iCount1 + 1
Loop
End Sub
PHP:
WHILE condition
{...statements...}
END
Condition: Điều kiện được xét mỗi khi qua vòng lặp.
Nếu điều kiện được xét trả về True, câu lệnh trong vòng lặp được thực hiện. Nếu điều kiện xét trả về False thì vòng lặp bị chấm dứt.
statements: Các câu lệnh được thực hiện trong mỗi vòng lặp được duyệt.
PHP:
Sub WhileWend_Statement_1()
Dim iCount As Long
iCount = 1
While iCount < 5
MsgBox iCount
iCount = iCount + 1
Wend
End Sub
PHP:
Sub WhileWend_Statement_2()
Dim iCount1 As Long, iCount2 As Long
iCount1 = 1
While iCount1 < 5
iCount2 = 6
While iCount2 < 8
MsgBox "Result is: " & iCount1 & " - " & iCount2
iCount2 = iCount2 + 1
Wend
iCount1 = iCount1 + 1
Wend
End Sub
PHP:
Switch(ParamArray VarExpr() As Variant)
Switch (expr1, value1, expr2, value2, ... expr_n, value_n)
VarExpr(): Danh sách các biểu thức cần được đánh giá. Chức năng SWITCH đang tìm kiếm biểu thức đầu tiên đánh giá TRUE.
Value: Danh sách các giá trị. Chức năng SWITCH sẽ trả về giá trị tương ứng với biểu thức đầu tiên đánh giá TRUE.
PHP:
Sub SWITCH_Statement()
Dim chkValue As Long, sValue As Long
chkValue = 2
sValue = Switch(chkValue = 1, 100, chkValue = 2, 200, chkValue = 3, 300)
MsgBox sValue '200
End Sub