Hướng dẫn cách viết vòng lặp Do Loop trong VBA

Các cấu trúc lập trình trong VBA liên quan tới vòng lặp khá đa dạng. Ngoài cấu trúc For… Next, For Each… Next, chúng ta còn có cấu trúc Do Loop. Vậy cách viết vòng lặp Do Loop trong VBA như thế nào? Chúng ta hãy cùng Học Excel Online tìm hiểu qua bài viết này nhé.

Cú pháp và mục đích của vòng lặp Do Loop trong lập trình VBA

Mục đích của vòng lặp Do Loop

Khi tìm hiểu về cấu trúc vòng lặp For… Next và For Each… Next trong VBA, chúng ta thấy 2 dạng vòng lặp này hầu như đều biết trước số lần thực hiện vòng lặp, hay nói cách khác là số lần thực hiện vòng lặp sẽ được xác định cụ thể.

Nhưng trong thực tế không phải lúc nào số lần vòng lặp cũng biết trước. Ví dụ như việc yêu cầu nhập đúng UserName và Password trong 1 form đăng nhập thì mới vào được chương trình.

Cách viết cú pháp Do Loop

Có 2 cách viết cú pháp như sau:

Cách 1: Điều kiện ở đầu vòng lặp

Do { While | Until } Điều kiện

[ Câu lệnh thực thi ]

[ Continue Do ]

[ Câu lệnh thực thi ]

Exit Do ]

[ Câu lệnh thực thi ]

Loop

Cách 2: Điều kiện ở cuối vòng lặp

Do

[ Câu lệnh thực thi ]

Continue Do ]

[ Câu lệnh thực thi ]

Exit Do ]

[ Câu lệnh thực thi ]

Loop { While | Until } Điều kiện

Trong đó:

  • Từ khóa Do (bắt buộc) : Để bắt đầu cho vòng lặp Do
  • Từ khóa While (bắt buộc nếu không dùng từ Until): Lặp lại vòng lặp cho đến khi điều kiện sai (chỉ dừng lại khi điều kiện chuyển từ đúng sang sai)
  • Từ khóa Until (bắt buộc nếu không dùng từ While): Lặp lại vòng lặp cho đến khi điều kiện thoả mãn.
  • Điều kiện: là 1 cấu trúc so sánh mà kết quả của phép so sánh đó luôn trả về giá trị Đúng hoặc Sai
  • Câu lệnh thực thi : là các câu lệnh thực thi 1 hành động hoặc trả về kết quả theo ý muốn trong từng vị trí tương ứng của cấu trúc.
  • Continue Do (không bắt buộc) : tiếp tục thực hiện vòng lặp Do mà không thoát dù thỏa mãn điều kiện trước đó, thường đặt sau câu lệnh thực thi.
  • Exit Do (không bắt buộc) : thoát vòng lặp tại vị trí được đặt từ khóa này, thường đặt sau câu lệnh thực thi.
  • Loop (bắt buộc) : từ khóa để kết thúc cấu trúc vòng lặp Do

* Lưu ý:

  • Không sử dụng đồng thời While và Until trong cùng 1 cấu trúc. Nếu đã dùng While thì không dùng Until và ngược lại.
  • Cấu trúc điều kiện ở đầu vòng lặp có thể khiến vòng lặp không chạy dù chỉ 1 lần.
  • Cấu trúc điều kiện ở cuối vòng lặp thì vòng lặp luôn chạy ít nhất 1 lần.
  • Có thể lồng ghép các cấu trúc vòng lặp khác, cấu trúc IF vào vị trí câu lệnh thực thi để lập trình những trường hợp vòng lặp phức tạp.
  • Do vòng lặp Do… Loop là dạng vòng lặp không xác định cụ thể số lần lặp, do đó dễ xảy ra vòng lặp vô tận (không có điểm dừng). Do đó cần xác định 1 số điểm dừng cho vòng lặp (bằng cấu trúc IF, vị trí đặt lệnh Exit Do). Trong trường hợp xảy ra vòng lặp vô tận, các bạn có thể bấm liên tục phím ESC trên bàn phím để ngừng vòng lặp này.

Ví dụ ứng dụng của vòng lặp Do Loop trong thực tế

Trong phần này, Học Excel Online sẽ mô tả cụ thể yêu cầu “nhập đúng UserName và Password trong 1 form đăng nhập thì mới vào được chương trình”.

Ví dụ như sau:

Chúng ta có 2 bảng gồm:

Bảng thứ 1: Bảng đăng nhập.

Tại đây người dùng sẽ phải nhập UserName vào ô B3, Password vào ô B6, và bấm vào Shape Xác nhận để xác nhận thông tin đăng nhập.

Bảng thứ 2: Danh sách tài khoản

Tại đây gồm các thông tin UserName và Password hợp lệ mà người dùng được phép sử dụng.

Nếu đăng nhập thiếu thông tin sẽ báo lỗi yêu cầu phải nhập đủ thông tin trong cả 2 ô UserName và Password

Nếu đăng nhập đúng theo cả UserName và Password tương ứng thì xác nhận là “Đăng nhập đúng”.

Còn chỉ cần sai 1 trong 2 yếu tố thì sẽ là “Đăng nhập sai”

Câu lệnh lập trình trong VBA cho việc “Xác nhận” như sau:

Các bạn có thể bấm vào mục “View raw” để copy đoạn copy về và sử dụng trong VBA Excel. File Excel mẫu có thể tải về tại địa chỉ: http://bit.ly/2NaI04g

Trong trường hợp này, chúng ta không thể biết rõ có bao nhiêu lần đăng nhập, mà chỉ biết khi nào đăng nhập chính xác. Khi đăng nhập chính xác sẽ kết thúc vòng lặp.

Do đó sử dụng vòng lặp Do While… Loop để xác định khi nào đăng nhập đúng.

Còn những trường hợp khác đều là đăng nhập sai hoặc thiếu thông tin sẽ xử lý bằng cấu trúc If… Then… End If

Các bạn có ví dụ nào về trường hợp sử dụng vòng lặp Do… Loop không? Hãy chia sẻ với Học Excel Online nhé.

Ngoài ra bạn có thể tham khảo thêm các bài viết sau:

Hướng dẫn cách viết code với đối tượng Workbook trong VBA Excel

Hướng dẫn cách viết code với đối tượng Worksheet trong VBA Excel

Hướng dẫn cách viết code với đối tượng Range trong VBA Excel


Tác giả: dtnguyen (Nguyễn Đức Thanh)

@ Học Excel Online | DTNguyen.business
· · ·

Khóa học mới xuất bản