VBA Break For Loop | Làm thế nào để thoát khỏi vòng lặp trong Excel VBA?

VBA trong Excel Break For Loop

Trong VBA Break For Loop còn được gọi là vòng lặp thoát cho, mọi vòng lặp trong bất kỳ thủ tục nào đều được cung cấp một bộ hướng dẫn hoặc tiêu chí som11e để nó chạy theo thời gian nhưng rất phổ biến là một số vòng lặp đi vào một vòng lặp vô hạn do đó làm hỏng mã trong các tình huống như vậy, chúng ta cần break for hoặc thoát khỏi vòng lặp for để thoát ra khỏi các tình huống nhất định.

Giả sử chúng ta đã hướng dẫn vòng lặp chạy 10 lần và dựa trên điều kiện được đưa ra nếu giá trị ô hoặc bất kỳ tiêu chí nào khác được cung cấp thành công thì nó phải thoát khỏi vòng lặp excel trước khi hoàn thành hạn ngạch vòng lặp đầy đủ là 10. Trong bài viết này , chúng tôi sẽ hướng dẫn bạn cách thoát khỏi vòng lặp dựa trên các tiêu chí được đưa ra.

Làm thế nào để phá vỡ / thoát khỏi vòng lặp trong VBA?

Bạn có thể tải xuống Mẫu VBA Break For Loop Excel này tại đây - Mẫu VBA Break For Loop Excel

# 1 - Ngắt cho vòng tiếp theo

VBA For Next Loop được sử dụng để lặp qua các ô và thực hiện một nhóm tác vụ cụ thể. Để có ví dụ, hãy xem mã VBA bên dưới.

Mã:

 Sub Exit_Loop () Dim K As Long For K = 1 to 10 Cells (K, 1) .Value = K Next K End Sub 

Thao tác này sẽ chèn các số sê-ri từ ô A1 đến A10.

Đây là điều hiển nhiên với For Next Loop.

Bây giờ tôi muốn phá vỡ vòng lặp khi tìm thấy bất kỳ giá trị nào trong 10 ô đầu tiên, vì vậy tôi đã nhập một số giá trị văn bản vào ô A8.

Bây giờ tôi muốn hướng dẫn điều này trong đoạn mã nói rằng "nếu ô lặp có giá trị nhất định, nó phải thoát khỏi vòng lặp trước giới hạn được xác định trước".

Mã:

 Sub Exit_Loop () Dim K As Long For K = 1 to 10 If Cells (K, 1) .Value = "" Then Cells (K, 1) .Value = K Else Exit For End If Next K End Sub 

Hãy xem dòng mã sau:

If Cells (K, 1) .Value = “” Then

Ô (K, 1) .Value = K

Khác

  Thoát cho

Kết thúc nếu

Nó cho biết If Cells (K, 1) .Value = “” ô lặp lại bằng không tiếp tục vòng lặp chèn các số sê-ri từ 1 đến 10.

Phần cuối cùng của vòng lặp cho biết:

Khác

  Thoát cho

Nếu điều kiện trên không ĐÚNG thì vòng lặp “Exit For”.

Bây giờ chạy mã nó sẽ chèn số sê-ri cho đến ô A7.

Đoạn mã trên ngay lập tức thoát khỏi vòng lặp mà không nói gì, làm sao chúng ta biết nó đã thoát khỏi vòng lặp.

Để xóa sự mơ hồ này, chúng ta cần đặt một hộp thông báo VBA đơn giản như bên dưới.

Mã:

 Sub Exit_Loop () Dim K As Long For K = 1 to 10 If Cells (K, 1) .Value = "" Then Cells (K, 1) .Value = K Khác MsgBox "Chúng tôi nhận được ô không trống, trong ô" & Ô (K, 1) .Address & vbNewLine & "We are out the loop" Exit For End If Next K End Sub 

Khi lặp qua ô nếu tìm thấy bất kỳ ô không trống nào, nó sẽ hiển thị thông báo “Chúng tôi đã nhận ô không trống, trong ô A8. Chúng tôi đang thoát khỏi vòng lặp ”.

Điều này cũng sẽ thông báo cho người dùng về việc thoát khỏi vòng lặp với một địa chỉ ô. Nếu bất kỳ giá trị nào được nhập do nhầm lẫn thì chúng ta có thể kiểm tra địa chỉ ô được trả về trong hộp thông báo.

# 2 - Break Do Until Loop

Giống như cách chúng ta đã thoát For Next Loop, tương tự, chúng ta cũng có thể thoát khỏi vòng lặp “Do Until”. Ví dụ, hãy xem đoạn mã dưới đây.

Mã:

 Sub Exit_DoUntil_Loop () Dim K As Long K = 1 Do Until K = 11 Cell (K, 1) .Value = KK = K + 1 Loop End Sub 

Mã này cũng thực hiện nhiệm vụ chèn số sê-ri. Ví dụ, nếu chúng ta muốn thoát khỏi vòng lặp khi giá trị của biến “k” trở thành 6, chúng ta cần nhập tiêu chí là IF k = 6 rồi thoát khỏi vòng lặp.

Mã:

 Sub Exit_DoUntil_Loop () Dim K As Long K = 1 Do Until K = 11 If K <6 Then Cells (K, 1) .Value = K Else Exit Do End If K = K + 1 Loop End Sub 

Điều này sẽ chạy vòng lặp cho đến khi giá trị biến trở thành 6, sau đó nó sẽ thoát khỏi vòng lặp. Nếu bạn muốn hiển thị thông báo cho người dùng thì bạn cũng có thể thêm hộp thông báo.

Mã:

 Sub Exit_DoUntil_Loop () Dim K As Long K = 1 Do Until K = 11 If K 5 "Exit Do End If K = K + 1 Loop End Sub 

Điều này sẽ hiển thị thông báo bên dưới.

Giống như điều này dựa trên các tiêu chí đã cho, chúng ta có thể thoát khỏi vòng lặp nếu tiêu chí là ĐÚNG hoặc nếu không, chúng tôi có thể tiếp tục vòng lặp.


$config[zx-auto] not found$config[zx-overlay] not found