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

Nội dung được viết bởi Ngọc Diệp

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é.

Thành thạo Do…Loop 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.

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

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.

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é.

Nếu công việc của bạn liên quan nhiều đến quản lý, phân tích dữ liệu và làm báo cáo trên bảng tính thì giỏi Excel thôi chưa đủ. Nếu chỉ dùng Excel, bạn sẽ thường xuyên phải OT đến mỗi kỳ làm báo cáo, stress vì sai dữ liệu do nhập thủ công, hay gặp vấn đề các hàm load chậm do dữ liệu quá nặng,...

Có lẽ bạn đã từng nghe ở đâu đó về công cụ lập trình VBA trên Excel, giúp bạn tiết kiệm tối đa thời gian làm việc nhờ làm báo cáo tự động, phân tích và xử lý số liệu chính xác tuyệt đối, đặc biệt công cần lọ mọ sửa thủ công,...

Nhưng bạn không dám nghĩ một ngày nào đó mình sẽ dùng VBA bởi vì mình không biết lập trình, sửa code và gỡ lỗi mã. Tin mình đi, bạn hoàn toàn có thể thành thạo công cụ này ngay cả khi không giỏi Excel, không biết lập trình với khóa học VBAG01: Tuyệt đỉnh VBA - Tự động hóa Excel với lập trình VBA tại Gitiho.

Tất tần tật những kiến thức từ cơ bản đến nâng cao về cách sử dụng VBA trong Excel sẽ được đề cập khiến mọi thao tác thủ công trên Excel gần như được loại bỏ hoàn toàn. 

Hãy nhấn vào Học thử hoặc Đăng ký ngay để cảm nhận sự “vi diệu” mà VBA mang lại cho công việc của bạn nhé!

0/5 - (0 bình chọn)

0/5 - (0 bình chọn)

0 thảo 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
Giấy phép mạng xã hội số: 588, cấp bởi Bộ thông tin và truyền thông