VBA cung cấp nhiều cấu trúc lập trình cho vòng lặp, bao gồm For…Next, For Each…Next và Do Loop. Trong bài viết này, Thủ Thuật sẽ hướng dẫn bạn cách sử dụng vòng lặp Do Loop trong VBA, cùng với cú pháp, ví dụ thực tế và những lưu ý quan trọng.
Vòng lặp Do Loop đặc biệt hữu ích khi bạn không biết trước số lần lặp, khác với For…Next và For Each…Next thường được dùng khi số lần lặp đã xác định.
Cú pháp và mục đích của vòng lặp Do Loop
Mục đích sử dụng
Vòng lặp Do Loop được sử dụng khi số lần lặp chưa được xác định trước. Một ví dụ điển hình là việc kiểm tra đăng nhập, vòng lặp sẽ tiếp tục cho đến khi người dùng nhập đúng tên đăng nhập và mật khẩu.
Cú pháp
Có hai cách viết cú pháp Do Loop:
Cách 1: Điều kiện ở đầu vòng lặp
Do { While | Until } Điều_kiện
' Các câu lệnh thực thi
[Continue Do]
' Các câu lệnh thực thi
[Exit Do]
' Các câu lệnh thực thi
Loop
Cách 2: Điều kiện ở cuối vòng lặp
Do
' Các câu lệnh thực thi
[Continue Do]
' Các câu lệnh thực thi
[Exit Do]
' Các câu lệnh thực thi
Loop { While | Until } Điều_kiện
Trong đó:
- Do: Từ khóa bắt đầu vòng lặp.
- While: Lặp lại vòng lặp khi điều kiện đúng.
- Until: Lặp lại vòng lặp khi điều kiện sai.
- Điều_kiện: Biểu thức logic trả về True hoặc False.
- Các câu lệnh thực thi: Khối lệnh được thực hiện trong mỗi vòng lặp.
- Continue Do: Bỏ qua các câu lệnh còn lại trong vòng lặp hiện tại và bắt đầu vòng lặp tiếp theo.
- Exit Do: Thoát khỏi vòng lặp ngay lập tức.
- Loop: Từ khóa kết thúc vòng lặp.
Lưu ý:
- Không sử dụng While và Until cùng lúc.
- Điều kiện ở đầu vòng lặp có thể khiến vòng lặp không thực hiện lần nào.
- Điều kiện ở cuối vòng lặp đảm bảo vòng lặp thực hiện ít nhất một lần.
- Có thể lồng các vòng lặp khác hoặc câu lệnh điều kiện If…Then…Else vào trong vòng lặp Do Loop.
- Cần cẩn thận để tránh vòng lặp vô tận. Sử dụng
Exit Do
hoặcIf...Then...Else
để kiểm soát điều kiện thoát. Nếu gặp vòng lặp vô tận, nhấn phím ESC để dừng.
Ví dụ ứng dụng: Xác thực đăng nhập
Dưới đây là ví dụ về việc sử dụng Do Loop để kiểm tra đăng nhập:
Ví dụ về yêu cầu form đăng nhập
Có hai bảng:
Bảng đăng nhập: Người dùng nhập tên đăng nhập và mật khẩu.
Bảng danh sách tài khoản: Chứa thông tin tên đăng nhập và mật khẩu hợp lệ.
Vòng lặp Do While sẽ kiểm tra thông tin đăng nhập cho đến khi đúng. Các trường hợp sai hoặc thiếu thông tin sẽ được xử lý bằng câu lệnh If…Then…Else.
Gif minh họa
Mã VBA cho việc “Xác nhận”:
'Ví dụ mã VBA (xem file mẫu để có mã đầy đủ)
Do While Not đăng_nhập_chính_xác
'Kiểm tra thông tin đăng nhập
If tên_đăng_nhập = "" Or mật_khẩu = "" Then
MsgBox "Vui lòng nhập đầy đủ thông tin"
ElseIf Not kiểm_tra_tài_khoản(tên_đăng_nhập, mật_khẩu) Then
MsgBox "Đăng nhập sai"
Else
đăng_nhập_chính_xác = True
MsgBox "Đăng nhập thành công"
End If
Loop
Bạn có thể tải file Excel mẫu tại: http://bit.ly/2NaI04g.
Kết luận
Vòng lặp Do Loop là một công cụ mạnh mẽ trong VBA, đặc biệt hữu ích khi số lần lặp chưa xác định. Hiểu rõ cú pháp và cách sử dụng Do Loop sẽ giúp bạn viết mã VBA hiệu quả hơn. Hãy khám phá thêm các bài viết khác của Thủ Thuật về VBA để nâng cao kỹ năng lập trình của bạn:
- Hướng dẫn viết code với đối tượng Workbook trong VBA Excel
- Hướng dẫn viết code với đối tượng Worksheet trong VBA Excel
- Hướng dẫn viết code với đối tượng Range trong VBA Excel
Discussion about this post