Xin code đơn giản để hiểu về Exit Funtion, Exit For (1 người xem)

  • Thread starter Thread starter LinDan
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

LinDan

Thành viên tiêu biểu
Tham gia
8/2/12
Bài viết
412
Được thích
111
Em đang tìm hiểu về Function rất mong AC cho em vài ví dụ Code đơn giản để em có thể hiểu, phân biệt về cách dùng của: Exit For, Exit Function (em vẫn hay nhầm cái này với End Funtion)
 
Em đang tìm hiểu về Function rất mong AC cho em vài ví dụ Code đơn giản để em có thể hiểu, phân biệt về cách dùng của: Exit For, Exit Function (em vẫn hay nhầm cái này với End Funtion)
Bình thường, VBA sẽ chạy tuần tự các lệnh trong Function, Sub rồi mới kết thúc (cái này tương ứng với End Function, End Sub). Tuy nhiên trong một số trường hợp, bạn cần chương trình dừng lại ngay khi gặp một kết quả phù hợp nào đó. Khi này bạn dùng đến những câu lệnh Exit.
Chẳng hạn: để tính n!, bạn theo quy tắc: n!=(n-1)! * n, nhưng phải có quy ước: 0!=1. Như vậy, bạn có thể xây dựng hàm này như sau:
PHP:
Function GT(n As Byte) As Long
    If n < 2 Then GT = 1: Exit Function
    GT = GT(n - 1) * n
End Function
Với cách làm trên, Function sẽ dừng lại khi gặp n<2. Như vậy, trong Excel, nếu ta gõ =GT(5) thì hàm này sẽ thực hiện câu lệnh GT = GT(n - 1) * n, còn nếu bạn nhập =GT(1) thì hàm sẽ trả về giá trị 1 và dừng lại, không thực hiện câu lệnh GT = GT(n - 1) * n.

Một ví dụ khác: Bạn đang muốn tìm bộ ba số nguyên liên tiếp là độ dài 3 cạnh của một tam giác vuông, bạn có thể sử dụng vòng lặp Do While - Loop, Do - Loop While hoặc Do - Loop Until. Tuy nhiên ở đây mình muốn minh họa nó bằng vòng For - Next để bạn hiểu về Exit For:
PHP:
Sub Test()
    Dim i As Integer
    For i = 1 To 1000
        If i * i + (i + 1) * (i + 1) = (i + 2) * (i + 2) Then Exit For
    Next
    MsgBox i
End Sub
Khi chạy code, gặp cái này "For i = 1 To 1000", VBA ngầm hiểu sẽ chạy câu lệnh bên trong 1000 lần. Tuy nhiên khi chạy, nó lại thấy có bộ (3, 4, 5) thỏa mãn điều kiện nên vòng For sẽ dừng lại ngay tại đây (khi i = 3) mà không chạy tiếp nữa.

Hy vọng 2 ví dụ này giúp được bạn.
Thân!
 
Upvote 0
Ví dụ sau
PHP:
Sub tt()
    Dim Rng As Range
    Set Rng = Range("A1:A12")
    For i = 1 To Rng.Count
        If Rng(i, 1).Value = 10 Then
            MsgBox Rng(i, 1).Address
        End If
    Next
End Sub
bạn thử
- Phương án bỏ Exit For
- Phương án giữ lại nó

xem kết quả thay đổi thế nào là hiểu ngay
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Em đang tìm hiểu về Function rất mong AC cho em vài ví dụ Code đơn giản để em có thể hiểu, phân biệt về cách dùng của: Exit For, Exit Function (em vẫn hay nhầm cái này với End Funtion)
Một cách đơn giản để hiểu là
- Exit For: Thoát khỏi vòng For, các lệnh tiếp theo thì làm tiếp
- Exit Function: Thoát khỏi nguyên cái Function, kết thúc vấn đề. (như Exit Sub vậy)

Sub vonglap
Dim i as integer
For i=1 to 10
If i=3 then exit for
Next i
Msgbox "Moi thoat vong lap thoi a"
End Sub

Sub vonglap
Dim i as integer
For i=1 to 10
If i=3 then exit sub
Next i
Msgbox "Moi thoat vong lap thoi a"
End Sub
Chạy thử để phân biệt bạn nhé
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom