Mục lục:
- Ví dụ về ví dụ tiếp theo
- Các ví dụ về ví dụ với Bước
- Ví dụ For-Next với câu lệnh Exit For
- Một ví dụ For-Next
Video: Phần 2: VBA for Excel - Bài 15: In ấn nhanh trong Excel sử dụng VBA 2025
Các loại đơn giản nhất của vòng lặp trong Excel VBA lập trình là một For-Next loop. Việc lặp lại được điều khiển bởi một biến đếm, bắt đầu ở một giá trị và dừng lại ở một giá trị khác. Các câu lệnh giữa câu lệnh For và câu lệnh Next là các câu lệnh lặp lại trong vòng lặp.
Ví dụ về ví dụ tiếp theo
Ví dụ sau sử dụng vòng lặp For-Next để tổng số 1, 000 số dương đầu tiên. Tổng biến bắt đầu bằng số không. Sau đó lặp lại xảy ra. Biến Cnt là bộ đếm vòng. Nó bắt đầu như là 1 và được tăng lên 1 mỗi lần thông qua các vòng lặp. Vòng kết thúc khi Cnt là 1, 000.
Ví dụ này chỉ có một câu lệnh bên trong vòng lặp. Câu lệnh này thêm giá trị của Cnt vào biến Total. Khi vòng lặp kết thúc, một MsgBox hiển thị tổng của các con số.
Sub AddNumbers () Dim Total Là Double Dim Cnt Như Long Total = 0 Đối với Cnt = 1 To 1000 Tổng cộng = Tổng cộng + Cnt Next Cnt MsgBox Tổng số End Sub
Bởi vì bộ đếm vòng lặp là một biến bình thường, bạn có thể viết code để thay đổi giá trị của nó trong khối mã giữa câu lệnh For và The Next. Tuy nhiên, đây là một thực hành rất xấu .
Các ví dụ về ví dụ với Bước
Bạn có thể sử dụng một giá trị Bước để bỏ qua một số giá trị đếm trong một vòng lặp For-Next. Dưới đây là ví dụ trước, được viết lại để tổng hợp các số lẻ giữa 1 và 1, 000:
Sub AddOddNumbers () Dim Total Là Double Dim Cnt Như Long Tổng = 0 Đối với Cnt = 1 To 1000 Bước 2 Tổng cộng = Tổng cộng + CNT Next Cnt MsgBox Total End Sub
Thời gian này, Cnt bắt đầu bằng 1 và sau đó lấy giá trị 3, 5, 7, vân vân. Giá trị Bước xác định cách đếm được tăng lên. Lưu ý rằng giá trị vòng trên (1000) không thực sự được sử dụng bởi vì giá trị cao nhất của Cnt là 999.
Đây là một ví dụ khác sử dụng một giá trị Step của 3. Thủ tục này hoạt động với bảng hoạt động và áp dụng bóng mờ màu xám cho mỗi hàng thứ ba, từ hàng 1 đến hàng 100.
Sub ShadeEveryThirdRow () Dim i As Long For i = 1 đến 100 Bước 3 Các hàng (i). Nội địa. Color = RGB (200, 200, 200) Tiếp theo i End Sub
Kiểm tra kết quả của thao tác macro này.
Sử dụng một vòng lặp để áp dụng bóng nền cho các hàng.Ví dụ For-Next với câu lệnh Exit For
Một vòng For-Next cũng có thể bao gồm một hoặc nhiều câu lệnh Exit For trong vòng lặp. Khi VBA gặp câu lệnh này, vòng lặp kết thúc ngay lập tức.
Ví dụ sau minh họa câu lệnh Exit For. Thủ tục này là một thủ tục Chức năng, dự định sẽ được sử dụng trong một công thức bảng tính.Hàm chấp nhận một đối số (một biến có tên là Str) và trả về các ký tự ở bên trái của chữ số đầu tiên. Ví dụ, nếu đối số là "KBR98Z," hàm trả về "KBR. "
Chức năng TextPart (Str) Dim i Như Long TextPart =" "Đối với i = 1 Để Len (Str) Nếu IsNumeric (Mid (Str, i, 1)) Sau đó Exit For Else TextPart = TextPart & Mid (Str, i, 1) End If Next i End Function
Vòng For-Next bắt đầu bằng 1 và kết thúc bằng số đại diện cho số ký tự trong chuỗi. Mã sử dụng chức năng VBA Mid để trích xuất một ký tự đơn lẻ trong vòng lặp. Nếu một ký tự số được tìm thấy, lệnh Exit For được thực hiện, và vòng lặp kết thúc sớm.
Nếu ký tự không phải là số, nó sẽ được nối với giá trị đã trả về (giống như tên của hàm). Lần duy nhất vòng lặp kiểm tra mỗi ký tự là nếu chuỗi được truyền như là đối số không có ký tự số.
Một ví dụ For-Next
Bạn có thể có bất kỳ số câu lệnh nào trong vòng lặp và tổ vòng lặp For-Next bên trong các vòng For-Next khác.
Ví dụ sau sử dụng một vòng For-Next lồng nhau để chèn các số ngẫu nhiên vào một dải ô 12-hàng-by-5-cột. Lưu ý rằng thủ tục thực hiện vòng lặp bên trong (vòng lặp với bộ đếm Hàng) một lần cho mỗi lần lặp của vòng lặp bên ngoài (vòng lặp với Col counter). Nói cách khác, thủ tục này thực thi lệnh Cells (Row, Col) = Rnd 60 lần. Các ô này được điền bằng cách sử dụng vòng lặp For-Next lồng nhau.
Sub FillRange () Kích thước Dim As Long Dim Row Như Long Đối với Col = 1 Để 5 Đối với Row = 1 Để 12 Cells (Row, Col) = Rnd Next Row Tiếp Col End SubVí dụ tiếp theo sử dụng nested For - Các vòng lặp tiếp theo để khởi tạo mảng ba chiều với giá trị 100. Thói quen này thực hiện câu lệnh ở giữa tất cả các vòng lặp (câu lệnh chuyển nhượng) 1, 000 lần (10 * 10 * 10), mỗi lần với một sự kết hợp khác các giá trị cho i, j, và k:
Sub NestedLoops () Dim MyArray (10, 10, 10) Dim i Như Long Dim j Như Long Dim k Như Long Đối với i = 1 To 10 Đối với j = 1 To 10 Đối với k = 1 đến 10 MyArray (i, j, k) = 100 Kế tiếp k Next j Tiếp theo i 'Các câu lệnh khác đi ở đây End Sub
Đây là một ví dụ cuối cùng sử dụng các vòng For-Next lồng nhau, với một giá trị Bước. Thủ tục này tạo ra một bàn cờ bằng cách thay đổi màu nền của các tế bào xen kẽ.
Sử dụng vòng lặp để tạo mẫu bảng cờ.
Bộ đếm hàng trỏ từ 1 đến 8. Một cấu trúc if-then xác định cấu trúc For-Next nào đã lồng nhau để sử dụng. Đối với các hàng được đánh số lẻ, số liệu đếm Col bắt đầu bằng 2. Đối với các hàng có số chẵn, số đếm Col bắt đầu bằng 1. Cả hai vòng lặp đều sử dụng giá trị Bước là 2, do đó các ô thay thế bị ảnh hưởng. Hai báo cáo bổ sung làm cho các ô vuông (giống như một bàn cờ thực).Sub MakeCheckerboard () Dim R As Long, C Như Long Đối với R = 1 đến 8 Nếu WorksheetFunction. IsOdd (R) Sau đó Đối với C = 2 đến 8 Bước 2 Các tế bào (R, C). Nội địa. Color = 255 Next C Else Đối với C = 1 đến 8 Bước 2 Các tế bào (R, C). Nội địa. Màu = 255 Tiếp C Cuối Nếu Tiếp R Rows ("1: 8").RowHeight = 35 Cột ("A: H"). ColumnWidth = 6. 5 End Sub