Bạn đang xem bài viết Hướng Dẫn Cách Viết Vòng Lặp Do Loop Trong Vba được cập nhật mới nhất tháng 9 năm 2023 trên website Nhatngukohi.edu.vn. Hy vọng những thông tin mà chúng tôi đã chia sẻ là hữu ích với bạn. Nếu nội dung hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất.
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 LoopKhi 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 LoopCó 2 cách viết cú pháp như sau:
Cách 1: Điều kiện ở đầu vòng lặp
[ Câu lệnh thực thi ]
[ Continue Do ]
[ Câu lệnh thực thi ]
[ Câu lệnh thực thi ]
Cách 2: Điều kiện ở cuối vòng lặp
[ Câu lệnh thực thi ]
[ Continue Do ]
[ Câu lệnh thực thi ]
[ Câu lệnh thực thi ]
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:
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:
View the code on Gist.
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
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
Hướng Dẫn Sử Dụng Vòng Lặp For.. Next Trong Vba
Vòng lặp trong Excel là quá trình lặp lại 1 đoạn mã theo một số lần nhất định trong VBA. Việc này rất có lợi trong những việc đòi hỏi nhiều thao tác thủ công lặp đi lặp lại (ví dụ như in ấn hàng loạt Phiếu thu, chi dựa trên 1 mẫu phiếu duy nhất). Việc tìm hiểu về vòng lặp là một yêu cầu cơ bản nhất cho những bạn bắt đầu với việc học cách sử dụng VBA trong Excel, vì mục tiêu của chúng ta luôn là “Giảm thao tác tay, tăng tính tự động nhằm tiết kiệm thời gian xử lý công việc”.
Ví dụ 1: Vòng lặp đơn
View the code on Gist.
Gán biến i với các giá trị từ 1 đến 10
Với mỗi giá trị i thì giá trị tại các ô ở cột A, dòng i sẽ có giá trị bằng i
Việc sử dụng vòng lặp sẽ có lợi ở trên phạm vi nhỏ, những công việc gần như bắt buộc phải thực hiện bằng tay
Với những bảng dữ liệu lớn thì cách sử dụng vòng lặp sẽ làm chậm hơn, khi đó nên cân nhắc chọn cách làm khác
Ví dụ 2: Vòng lặp kép
Đôi khi chúng ta cần thực hiện nhiều vòng lặp lồng nhau trong cùng 1 câu lệnh VBA, khi đó chúng ta cần sử dụng vòng lặp kép.
Cách sử dụng vòng lặp kép khá đơn giản và dễ thực hiện. Chúng ta cùng tìm hiểu ví dụ sau:
Vòng lặp kép 2 vòng lồng nhau
View the code on Gist.
Biến i là thể hiện số cột được lặp trong bảng
Biến j là thể hiện số dòng được lặp trong bảng
Vòng lặp kép 3 vòng lồng nhau
Tương tự với vòng lặp 2 vòng, chúng ta có thể tạo ra vòng lặp kép 3 vòng với việc xét đồng thời 1 yếu tố nữa về Sheet để có thể mở rộng phạm vi hoạt động cho nhiều sheet cùng lúc
View the code on Gist.
Tùy theo nhu cầu công việc chúng ta có thể tùy biến vòng lặp để đưa ra được kết quả mong muốn.
Việc xử lý dữ liệu trên Excel đôi khi mất nhiều thời gian và công sức khi các dữ liệu có tính lặp đi lặp lại. VBA khắc phục được điểm này. Khi sử dụng VBA trong công việc, bạn có thể rút ngắn thời gian làm việc rất nhiều, có thể từ 01 ngày (nếu xử lý trên Excel) còn 01h (khi xử lý trên VBA). Ngoài ra, VBA còn giúp lập báo cáo tự động và điều khiển các chương trình khác như Word, Power Point, Outlook … giúp biến file Excel của bạn trở thành 1 phần mềm chuyên nghiệp …
Hướng Dẫn Cách Sử Dụng Vòng Lặp For Each Trong Vba Excel
Đặc điểm vòng lặp For Each
Vòng lặp For Each là vòng lặp xét lần lượt từng đối tượng trong 1 tập hợp các đối tượng:
Mỗi ô trong 1 Range
Mỗi Sheet trong 1 Workbook
Mỗi Workbook trong 1 thư mục
…
Với mỗi 1 đối tượng được xét đến mà thỏa mãn 1 điều kiện nào đó thì sẽ thực hiện 1 nhóm lệnh, nhóm hành động theo ý muốn.
Các đối tượng trong tập hợp phải cùng 1 loại, có đặc điểm giống nhau.
Cấu trúc của vòng lặp For EachTrong vòng lặp For Each thường sử dụng 2 biến:
Biến tập hợp đối tượng (bien_TapHop)
Biến chỉ mỗi đối tượng trong tập hợp (bien_DoiTuong)
Cấu trúc:
For Each bien_DoiTuong in bien_TapHop
[Nội dung nhóm lệnh thực hiện trên từng đối tượng]
Next bien_DoiTuong
Hướng dẫn cách viết vòng lặp For Each trong VBATrong bảng danh sách nhân viên, hãy xác định mức thưởng cho nhân viên biết: Nếu nhân viên ở bộ phận kinh doanh có mức thưởng là 500
Xét từng nhân viên có bộ phận là kinh doanh thì mức thưởng là 500
2. Các đối tượng:
Vùng B2:B8 chứa thông tin bộ phận của từng nhân viên (bien_TapHop)
Mỗi ô trong vùng B2:B8 là đối tượng cần xét (bien_DoiTuong)
Giá trị đối tượng cần so sánh: ô E2 có nội dung là “Kinh doanh”
Kết quả nếu mệnh đề thỏa mãn là ô F2 có giá trị là 500
Kết quả sẽ được điền tương ứng vào vùng C2:C8, tương ứng theo dòng đối tượng được xét
Bắt đầu câu lệnh với cú pháp khai báo 2 biến là bien_BoPhan và bien_DoiTuong
Thiết lập phạm vi cho biến bộ phận là vùng B2:B8
Thực hiện vòng lặp For Each với từng đối tượng trong Bộ phận
Dùng cấu trúc IF để so sánh giá trị của biến Đối tượng với giá trị tại ô E2
Dùng phương thức OFFSET để dịch chuyển sang 1 cột về bên phải so với biến đối tượng. Đây là vị trí lấy kết quả thỏa mãn điều kiện
Hướng dẫn sử dụng vòng lặp For.. Next trong VBA Vòng lặp For trong VBA Excel chi tiết và ví dụ Hướng dẫn cách viết cấu trúc IF THEN ELSE trong VBA Excel
Vòng Lặp For Each Trong Vba
Trong bài này mình sẽ hướng dẫn cách sử dụng vòng lặp For Each trong VBA, đây là vòng lặp rất hữu ích khi bạn muốn lặp qua một tập hợp nào đó như mảng, danh sách các trong một Range của Excel.
Chúng ta đã được học qua một số vòng lặp trong VBA rồi, nhưng bài này mình muốn mô tả chi tiết hơn về cách sử dụng vòng lặp này để lặp qua các ô trong Excel để xử lý chúng.
1. Cú pháp vòng lặp For Each trong VBAVòng lặp này có cú pháp rất đơn giản.
For Each item In items ' code xử lý Next itemTrong đó:
items là một tập hợp, co thể là một mảng, một danh sách được trả về từ một đối tượng nào đó trong VBA như Range, Worksheets.
item là biến tạm, dùng để lưu giá trị cho các phần tử trong mỗi lần lặp.
Khác với vòng lặp For, vòng lặp For Each không cần biết trước tổng số lần lặp, bởi nó sẽ duyệt qua từng phần tử cho tới khi gặp phần tử rỗng ( tức là đã lặp hết). Chính vì vậy nó được sử dụng rất nhiều khi các bạn làm việc với VBA.
2. Ví dụ về vòng lặp For Each trong VBAVì chúng ta chưa học về cách khai báo mảng nên mình sẽ sử dụng bài tập như sau:
Bài tập: Lặp qua các ô từ A1 đến B10, sau đó gán giá trị cho mỗi ô chính là số thứ tự của lần lặp đó.
Dim ranges As Range, rag As Range, i As Integer Set ranges = Range("A1:B10") i = 1 For Each rag In ranges rag.Value = i i = i + 1 Next rag End SubGiải thích: Mỗi lần lặp thì biến rag chính là phần tử (ô) của lần lặp đó, nên ta sử dụng rag.Value = i để gán giá trị cho ô đó.
Vòng Lặp For Trong Vba
Vòng lặp for trong VBA được sử dụng để lặp một phần của chương trình nhiều lần. Nếu số lần lặp là cố định thì vòng lặp for được khuyến khích sử dụng, còn nếu số lần lặp không cố định thì nên sử dụng vòng lặp while hoặc do while.
Cú pháp For counter = start To end [Step stepcount] [statement 1] [statement 2] .... [statement 10] [Exit For] [statement 11] [statement 22] .... [statement n] NextTrong đó:
Ví dụ về vòng lặp for trong VBAVí dụ 1: Sử dụng từ khóa Step 2 để tăng biến đếm 2 đơn vị sau mỗi vòng lặp.
Sub ForExample1() Dim i As Integer For i = 0 To 10 Step 2 MsgBox "Gia tri cua i la: " & i Next End SubKết quả:
Gia tri cua i la: 0 Gia tri cua i la: 2 Gia tri cua i la: 4 Gia tri cua i la: 6 Gia tri cua i la: 8 Gia tri cua i la: 10Ví dụ 2: Sử dụng từ khóa Step -2 để giảm biến đếm 2 đơn vị sau mỗi vòng lặp.
Sub ForExample2() Dim i As Integer For i = 10 To 0 Step -2 MsgBox "Gia tri cua i la: " & i Next End SubKết quả:
Gia tri cua i la: 10 Gia tri cua i la: 8 Gia tri cua i la: 6 Gia tri cua i la: 4 Gia tri cua i la: 2 Gia tri cua i la: 0Ví dụ 3: không cần sử dụng từ khóa Step, biến đếm i tăng dần từ 1 đến 5.
Sub ForExample3() Dim i As Integer For i = 1 To 5 MsgBox "Gia tri cua i la: " & i Next End SubKết quả:
Gia tri cua i la: 1 Gia tri cua i la: 2 Gia tri cua i la: 3 Gia tri cua i la: 4 Gia tri cua i la: 5 Ví dụ về thoát vòng lặp for trong VBATừ khóa Exit For được sử dụng để thoát vòng lặp for trong VBA.
Ví dụ:
Sub ForExample4() Dim i As Integer For i = 0 To 10 Exit For Else MsgBox "Gia tri cua i la: " & i End If Next End SubKết quả:
Gia tri cua i la: 0 Gia tri cua i la: 1 Gia tri cua i la: 2 Gia tri cua i la: 3Vòng Lặp For Trong Vba Và Các Ví Dụ Cách Sử Dụng
Khi thao tác đọc hay ghi dữ liệu trên bảng tính Excel được thực hiện lặp nhiều lần. Đó là lúc bạn cần sử dụng đến vòng lặp để đơn giản hóa các thao tác lặp đó.
Vòng lặp FOR trong VBA Cú pháp:Trong đó:
Biến i được khai báo kiểu số, biến này sẽ tăng hoặc giảm theo n3 sau mỗi vòng lặp.
n1: là một số, giá trị của n1 sẽ là giá trị bắt đầu của vòng lặp.
n2: là một số, giá trị i = (n2 + n3) sẽ là giá trị kết thúc của vòng lặp.
n3: là một số, giá trị của n3 là bước nhảy của i sau mỗi lòng lặp. Bỏ “Step n3” nếu không sử dụng, và mặc định là 1.
Next i: là lệnh sẽ thực hiện tăng hoặc giảm với giá trị (i + n3).
Giải thích cú pháp:Ví dụ: n1=1, n2=9 và n3 =1 thì vòng lặp sẽ thực thi từ giá trị i=1, sau mỗi vòng lặp i sẽ tăng lên i + 1. Và khi i = 9 + 1=10 thì vòng lặp sẽ kết thúc.
Cách ví dụ cách sử dụng vòng lặp FOR Ví dụ 1: Ghi giá trị vào range A1:D10💡 Vì Range A1:D10 là một mảng 2 chiều bao gồm cả hàng và cột, nên ở đây sẽ cần phải sử dụng 2 vòng lặp FOR (vòng lặp FOR lồng nhau).
Vòng lặp 1 sẽ dùng để quét hàng từ 1 đến 10
Vòng lặp 2 sẽ dùng để quét cột từ A đến D, tức là từ 1 đến 4.
👉 Sau phân tích, chúng ta sẽ có một hàm như sau:
👍 Kết quả: chạy hàm, Excel sẽ tự động ghi vào Range từ A1:D10 theo giá trị được lập trình.
💡 Range A1:A100 chỉ nằm trong cột A nên ở đây chỉ cần sử dụng 1 vòng lặp FOR. Và để kiểm tra được giá trị là lớn hơn 900, bạn sẽ cần phải sử dụng thêm hàm điều kiện IF.
👉 Như vậy, bạn có thể viết một hàm như sau:
Trong hàm trên, bạn để ý một số lệnh sau:
CInt(Sheets(2).Cells(i, 1).Value): hàm CInt() là hàm chuyển chuỗi về kiểu Integer.
dem = dem + 1: tức là sau mỗi lần kiểm tra, nếu biến so lớn hơn 900 sẽ cộng thêm 1.
luuso = luuso & so & ” “: cộng chuỗi sau mỗi vòng lặp.
👍 Kết quả: chạy hàm, bạn sẽ có được số lần xuất hiện và số lớn hơn 900.
Để thoát vòng lặp FOR khi vòng lặp chưa kết thúc, bạn sử dung lệnh Exit For. Như trong ví dụ 2, bạn có thể thay đổi lại chương trình là kiểm tra nếu số nhỏ hơn 100 thì thoát vòng lặp.
👍 Kết quả: chạy hàm, bạn sẽ có được vị trí cuối cùng có giá trị < 100.
Cập nhật thông tin chi tiết về Hướng Dẫn Cách Viết Vòng Lặp Do Loop Trong Vba trên website Nhatngukohi.edu.vn. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung để bạn nhận được thông tin nhanh chóng và chính xác nhất. Chúc bạn một ngày tốt lành!