Nhã Linh
Nhã Linh PRO
Thảo luận 0 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 1261 lượt xem

Hướng dẫn viết cấu trúc Do...Loop trong vòng lặp VBA Excel

Jun 02 2021

Trong bài viết ngày hôm nay, chúng mình sẽ học cách viết cấu trúc Do...Loop để tạo vòng lặp VBA. Cấu trúc này được sử dụng với mục đích gì? Làm thế nào để viết lệnh VBA Excel chuẩn xác? Hãy cùng Gitiho đi tìm câu trả lời ngay nhé.

Tuyệt đỉnh VBA - Viết code trong tầm tay

Giới thiệu về vòng lặp VBA

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

Vòng lặp VBA giúp người dùng tự động lặp lại một dải code nhiều lần cho đến một mức kết quả nhất định hoặc thỏa mãn điều kiện đề ra. Điều này giúp chúng ta tiết kiệm thời gian viết code VBA Excel thủ công và dài dòng. Có thể nói đây là một trong những công cụ VBA Excel mạnh nhất ở thời điểm hiện tại.

Các cấu trúc vòng lặp VBA

Có 3 loại vòng lặp VBA cho phép người dùng tự động hóa công việc trên Excel. Chúng ta có thể chọn bất kì loại nào để sử dụng trong từng trường hợp cụ thể.

  • Do Until Loop: Lặp lại code VBA Excel cho đến một mức kết quả nhất định hoặc giá trị trả về là Đúng (TRUE).
  • Do While Loop: Tiếp tục lặp lại code VBA Excel ngay cả khi đã đạt được kết quả nhất định hoặc giá trị trả về là Đúng (TRUE).
  • For Loop: Lặp lại code VBA Excel với một số lần nhất định.

Cấu trúc Do...Loop trong vòng lặp VBA

Cách viết cấu trúc Do...Loop trong vòng lặp VBA

Trong phần này, chúng ta sẽ tìm hiểu 2 cách viết câu trúc Do...Loop trong vòng lặp VBA.

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

Cấu trúc code VBA Excel có dạng như sau:

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: Viết điều kiện ở cuối vòng lặp VBA

Cấu trúc code VBA Excel có dạng như sau:

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 cả 2 cách, chúng ta viết các từ khóa và dòng lệnh sau:

  • Từ khóa Do (bắt buộc): Bắt đầu 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: Đóng vai trò 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 (TRUE) hoặc Sai (FALSE).
  • Câu lệnh thực thi: Thực thi một 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.
  • Từ khóa Loop (bắt buộc): Kết thúc cấu trúc vòng lặp Do.

Một số lưu ý khi viết cấu trúc Do...Loop trong vòng lặp VBA

Khi tạo vòng lặp VBA Excel, chúng ta cần lưu ý một số điểm sau đây:

  • Tuyệt đối không sử dụng đồng thời While và Until trong cùng một cấu trúc vòng lặp
  • 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 lần nào.
  • Cấu trúc điều kiện ở cuối vòng lặp sẽ khiến vòng lặp luôn chạy ít nhất một lần.
  • Có thể lồng ghép các cấu trúc vòng lặp khác hoặ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.
  • Vì 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). Để xác định điểm dừng cho vòng lặp, chúng ta có thể sử dụng cấu trúc IF tại vị trí đặt lệnh Exit Do. Ngoài ra, các bạn có thể bấm liên tục phím Esc trên bàn phím để dừng vòng lặp VBA.

Xem thêm: Hướng dẫn từng bước cách viết Macro trong VBA Excel

Ứng dụng cấu trúc Do...Loop trong vòng lặp VBA

Giả sử chúng ta thiết lập file Excel có chức năng yêu cầu người dùng nhập đúng tên (UserName) và mật khẩu (Password) trong bảng đăng nhập để truy cập được tài liệu. Đây là một phương pháp bảo vệ file Excel hiệu quả bên cạnh công cụ mật khẩu cài sẵn trên phần mềm.



Chúng ta có hai bảng như sau:

  • Bảng đăng nhập: Nhập tên và mật khẩu vào các ô B3 và B6 tương ứng, sau đó nhấn nút Xác nhận.
  • Bảng danh sách tài khoản: Chứa thông tin tên và mật khẩu hợp lệ cho bảng đăng nhập.

Điều kiện đặt ra trong đề bài cụ thể là:

  • Nếu đăng nhập sai một trong hai thông tin thì hệ thống hiện thông báo MsgBox "Thông tin đăng nhập không chính xác".
  • Nếu đăng nhập đúng cả hai thông tin thì hệ thống xác nhận "Đăng nhập chính xác". 
  • Nếu đăng nhập thiếu một trong hai thông tin thì hệ thống sẽ yêu cầu nhập lại đầy đủ cả tên và mật khẩu đăng nhập.

Như vậy, câu lệnh vòng lặp VBA Excel cho quy trình xác nhận này được viết với cấu trúc Do...Loop như sau:


Sub Login_confirm()

Dim username As String
Dim password As String
   username = Sheets("Sheet1").Range("B3").Value
   password = Sheets("Sheet1").Range("B6").Value
Dim i As Integer
   i = 3

If username = "" Or password = "" Then
   MsgBox "Vui long nhap day du thong tin"
Else
   Do While Sheets("Sheet1").Range("E" & i).Value <> "" And i < 5
     If username = Sheets("Sheet1").Range("E" & i).Value And _
        password = Sheets("Sheet1").Range("F" & i).Value Then
             MsgBox "Dang nhap chinh xac"
             Exit Sub
        Else
          i = i + 1
        End If
   Loop
   MsgBox "Thong tin dang nhap khong chinh xac"
End If

End Sub


Với ví dụ này, chúng ta không thể nắm rõ số lần đăng nhập chính xác mà chỉ xác định được điều kiện đăng nhập mà thôi. Do vậy, chúng ta sẽ sử dụng cấu trúc Do...Loop trong vòng lặp VBA và kết thúc vòng lặp khi thực hiện đăng nhập chính xác. Ngoài ra, chúng ta sử dụng thêm cấu trúc If để xác định các trường hợp đăng nhập sai.


Xem thêm: Cách viết cấu trúc IF THEN ELSE trong VBA Excel

Tổng kết

Qua bài viết này, chúng ta đã học cách viết cấu trúc Do...Loop chính xác trong vòng lặp VBA. Nếu bạn cần tìm hiểu các kiến thức VBA Excel để áp dụng vào công việc, hãy tham khảo các bài viết trên blog Gitiho và đăng ký khóa học Tuyệt đỉnh VBA với chúng mình nhé.


Gitiho chúc các bạn thành công!


Tham khảo các bài viết khác về chủ đề VBA Excel tại đây:
Hướng dẫn tìm kiếm và lọc dữ liệu tự động bằng Textbox trong Excel VBA

Hướng dẫn hiện thẻ Developer để ghi Macro hoặc viết code VBA trong Excel

Unicode tiếng việt khi viết trong VBA

Hướng dẫn cách viết hàm VBA trong Excel

Cách sử dụng hàm MsgBox() để tạo hộp thông báo với VBA




Cùng tham gia cộng đồng hỏi đáp về chủ đề VBA

Thảo luận 0 câu trả lời
Lượt xem 1261 lượt xem
Vỗ tay vỗ tay

0 Bình luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội