_Nếu bạn đang viết một chương trình VBA và bạn muốn thực hiện cùng một tác vụ nhiều lần thì bạn có thể thực hiện việc này bằng cách sử dụng VBA cho các vòng lặp. VBA là một ngôn ngữ lập trình tuần tự. Mỗi dòng mã được thực thi từ trên xuống dưới cho đến khi không còn dòng mã nào để đọc. Nếu bạn muốn quay lại và thực hiện một tác vụ, thì bạn phải buộc bằng cách sử dụng mã macro.

Bạn nhận được kết quả với loop._

Vòng lặp For trong VBA là một trong những loại vòng lặp phổ biến nhất. Vòng lặp For có hai dạng: For Next và For Each In Next. Vòng lặp For thường được sử dụng để di chuyển tuần tự qua danh sách các mục hoặc số.

Để kết thúc vòng lặp For tại bất kỳ điểm nào đã cho, chúng ta có thể sử dụng câu lệnh exit.

Vòng lặp For sẽ diễn ra vòng vo cho đến khi đạt điều kiện cuối cùng. Khi điều kiện cuối cùng được đáp ứng, quy trình lập trình sẽ tiếp tục đi xuống theo hướng tự nhiên của nó.

The For … Next loop has the following syntax:

For counter = start_counter To end_counter

'Do something here (your code)

Next counter

Chúng tôi thực sự đang tạo một vòng lặp sử dụng bộ đếm biến làm “người giữ thời gian” của vòng lặp. Chúng tôi đặt nó thành một giá trị bằng start_counter ở đầu vòng lặp và sau đó tăng nó lên 1 trong mỗi vòng lặp cho đến khi nó đáp ứng điều kiện kết thúc. Vòng lặp sẽ thực hiện cho đến khi giá trị của bộ đếm bằng end_counter. Vòng lặp thực hiện lần cuối khi cả hai giá trị trên khớp nhau và sau đó vòng lặp dừng lại.

Tất cả những điều trên có thể gây nhầm lẫn cho một số người, vì vậy hãy chuẩn bị và bắt đầu học For Loop trong excel với một vài ví dụ.

Tạo một sổ làm việc excel mới sau đó lưu nó với phần mở rộng .xlsm Để khởi chạy màn hình soạn thảo Visual Basic, hãy sử dụng ALT + F11 Chèn Mô-đun Mới Sao chép đoạn mã dưới đây trong mô-đun chuẩn VB

img1

Vòng 1 (Hiển thị số với msgbox)

Sub Loop1()

Dim StartNumber As Integer

Dim EndNumber As Integer

EndNumber = 5



For StartNumber = 1 To EndNumber

MsgBox StartNumber & " is " & "Your StartNumber"

Next StartNumber

End Sub

img2

Giải thích mã:

Mã VBA cần bạn gán giá trị cho StartNumber, trong đó EndNumber là các biến được khai báo dưới dạng số nguyên làm điểm bắt đầu cho vòng lặp của bạn Các giá trị này có thể là bất kỳ số nào & chúng ta có EndNumber là 5 StartNumber được bắt đầu ở 1 Đối với StartNumber = 1 Đến EndNumber có nghĩa là mã sẽ bắt đầu từ 1 (Số bắt đầu) đến 5 (Số kết thúc)

  • MsgBox StartNumber & “is” & “Your StartNumber” sẽ hiển thị hộp thông báo sau

img3

Loop2 (Điền giá trị)

Sub Loop2()

'Fills cells A1:A56 with values of X by looping' --- Comment

'Increase value of X by 1 in each loop' --- Comment

Dim X As Integer

For X = 1 To 56

Range("A" & X).Value = X

Next X

End Sub

img4

Giải thích mã:

Chúng tôi đã gán X là số nguyên Cho X = 1 đến 56; điều này sẽ bắt đầu với 1 và tiếp tục cho đến 56 với gia số là 1 mỗi lần * Range (“A” & X) .Value = X; dòng này sẽ lưu giá trị của X và sẽ chuyển đến dải ô A1 đến A56

img5

Loop3 (Tô màu nền cho các ô)

Sub Loop3()

' Fills cells B1:B56 with the 56 background colours' --- Comment

Dim X As Integer

For X = 1 To 56

Range("B" & X).Select

With Selection.Interior

.ColorIndex = X

.Pattern = xlSolid

End With

Next X

End Sub

img6

Giải thích mã:

Chúng tôi đã gán X là số nguyên Đối với X = 1 đến 56 sẽ bắt đầu bằng 1 và tiếp tục cho đến 56 với số gia tăng là 1 mỗi lần Phạm vi (“B” & X) .Select; dòng này sẽ lưu giá trị của X & chọn ô B1 cho đến B56. 4 dòng tiếp theo, tức là với Selection.Interior sẽ chọn nội thất màu & lấy giá trị từ X của chỉ mục màu đó sao cho 1 thuộc về màu đen; 2 thuộc về màu trắng; 3 cho màu đỏ & vân vân

img7

Vòng 4 (Điền các Giá trị với số gia là 2)

Theo mặc định, giá trị Bước được chuyển tiếp 1, tuy nhiên nó có thể được đặt thành một số lớn hơn 1.

Sub Loop4()

' Fills every second cell from C1:C50 with values of X' --- Comment

Dim X As Integer

For X = 1 To 50 Step 2

Range("C" & X).Value = X

Next X

End Sub

img8

Giải thích mã:

Chúng tôi đã gán X là một số nguyên Cho X = 1 đến 50 Bước 2; điều này sẽ bắt đầu bằng 1 trong X cho đến 50 với gia số 2 mỗi lần * Range (“C” & X) .Value = X; dòng này sẽ lưu giá trị của X và sẽ chuyển đến dải C1 đến C50

img9

Vòng lặp 5 (VBA Cho Vòng lặp Đảo ngược với Hướng dẫn BƯỚC)

Không nhất thiết bộ đếm trong vòng lặp For sẽ chỉ di chuyển từ giá trị thấp đến giá trị cao hơn; thay vào đó, vòng lặp For có thể chạy ngược lại, tức là giá trị cao đến giá trị thấp hơn.

Mặc dù giá trị Bước tiến 1 theo mặc định, tuy nhiên, nó có thể được đặt thành một số theo thứ tự ngược lại.

Sub Loop5()

' Fills cells from D1:D50 with values of X' --- Comment

' In this case X decreases by 1' --- Comment

Dim X As Integer, Row As Integer

Row = 1



For X = 50 To 0 Step -1

Range("D" & Row).Value = X

Row = Row + 1

Next X

End Sub

img10

Giải thích mã:

Chúng tôi đã gán X & Row dưới dạng số nguyên Hàng chứa giá trị 1 Cho X = 50 đến 0 Bước -1; điều này sẽ bắt đầu từ 50 với giảm 1 trong X cho đến 0 Phạm vi (“D” & Hàng) .Value = X; dòng này sẽ lưu giá trị của X và sẽ chuyển đến dải ô từ D1 đến D50

img11

Vòng 6 (Điền vào mỗi ô thứ hai trong Đảo ngược với BƯỚC-2)

Trong ví dụ vòng lặp For ở trên, chúng ta có thể sử dụng Step và order để xem vòng lặp For hoạt động theo hướng tiến hay lùi.

Sub Loop6()

' Fills every second cell from E1:E100 with values of X' --- Comment

' In this case X decreases by 2' --- Comment

Dim X As Integer, Row As Integer

Row = 1

For X = 100 To 0 Step -2

Range("E" & Row).Value = X

Row = Row + 2

Next X

End Sub

img12

Giải thích mã:

Chúng tôi đã gán X & Row dưới dạng số nguyên Hàng chứa giá trị 1 Cho X = 100 đến 0 Bước -2; điều này sẽ bắt đầu từ 100 với sự giảm dần 2 trong X cho đến 0 Phạm vi (“E” & Hàng) .Value = X; dòng này sẽ lưu giá trị của X và sẽ chuyển đến dải E1 đến E100

img13

Vòng lặp 7 (Đối với Vòng lặp với điều kiện IF: Điền các ô bắt đầu từ ô cụ thể) Thao tác này sẽ lấp đầy các ô từ ô F11 với giá trị 11 cho đến khi X đáp ứng điều kiện IF

Sub Loop7()

' Starts to fill cells F11:F100 with values of X' --- Comment

' This will exit from the loop after 50' --- Comment

Dim X As Integer

For X = 11 To 100

Range("F" & X).Value = X

If X = 50 Then

MsgBox ("Bye Bye")

Exit For

End If

Next X

End Sub

img14

Giải thích mã:

Chúng tôi đã gán X là một số nguyên Cho X = 11 đến 100; sẽ bắt đầu từ 11 với gia số 1 trong X cho đến khi điều kiện đáp ứng * Phạm vi (“F” & X) .Value = X; dòng này sẽ lưu giá trị của X và sẽ chuyển đến dải F11 cho đến khi điều kiện đáp ứng

img15

  • Sau khi nhập giá trị 50 vào ô F50, hộp thông báo sau sẽ được hiển thị

Nếu bạn thích blog của chúng tôi, hãy chia sẻ nó với bạn bè của bạn trên Facebook. Và bạn cũng có thể theo dõi chúng tôi trên Twitter và Facebook.

Chúng tôi rất muốn nghe ý kiến ​​từ bạn, hãy cho chúng tôi biết cách chúng tôi có thể cải thiện, bổ sung hoặc đổi mới công việc của mình và làm cho nó tốt hơn cho bạn. Viết thư cho chúng tôi tại [email protected]