Bắt đầu với vòng lặp For trong VBA Excel

 Đối với vòng lặp trong VBA là một trong những khái niệm mạnh mẽ nhất mà bạn có thể nắm vững vì vòng lặp rất cần thiết để tự động hóa các tác vụ lặp đi lặp lại. Bằng cách sử dụng các vòng lặp, bạn sẽ có thể lặp lại toàn bộ bảng tính của mình chỉ trong vài phần giây.

Để minh họa quan điểm của tôi, chúng ta hãy đi sâu vào với một ví dụ cơ bản về vòng lặp For. Sao chép và dán macro này vào VBA Editor (Alt+F11) của bạn.

Sub Thuchanh _ForLoops()
Dim i As Integer
For i = 1 To 1000
Range("A" & i) = i ^ 2
Next i
End Sub
Các phần điều khiển Vòng lặp For được trình bày bằng màu đỏ. đối tượng Range trong VBA được sử dụng để kiểm soát một ô (hoặc một phạm vi ô). Trong ví dụ này, macro lặp qua từng hàng trong cột "A" từ 1 đến 1000 và đặt mỗi ô bằng bình phương của số hàng. Đây có thể là một vòng lặp cơ bản, nhưng điều đó không làm cho nó kém ấn tượng hơn. Bạn có thể thấy VBA đã có thể lấp đầy 1000 hàng đầu tiên trong bảng tính của bạn nhanh như thế nào. Điều gì sẽ xảy ra nếu bạn chỉ muốn thực hiện hành động trên mỗi hàng thứ 5? Vòng lặp For có một từ khóa đặc biệt có thể làm điều đó. Hãy xem ví dụ này:
Sub Practice_ForLoops()
Dim i As Integer
For i = 1 To 1000 Step 5
Range("B" & i) = Sqr(Range("A" & i))
Next i
End Sub
Thẻ Step yêu cầu vòng lặp For lặp lại từ 1 đến 1000 với gia số là 5, bắt đầu bằng 1. Ví dụ này sử dụng hàm VBA Sqr để hiển thị căn bậc hai của giá trị chúng ta vừa đặt trong Cột A và nó đặt kết quả vào cột B, giống như hình bên phải hiển thị. Tuy nhiên, bạn không bị giới hạn chỉ bước về phía trước. Bạn cũng có thể tiến lùi, như trong ví dụ này:
Sub Practice_ForLoops3()
Dim i As Integer
For i = 1000 To 1 Step -3
Range("C" & i) = Sqr(Range("A" & i))
Next i
End Sub
Vòng lồng nhau Vòng lặp VBA For trở nên có giá trị hơn khi bạn bắt đầu lồng chúng vào nhau. Hãy xem một ví dụ với các vòng lặp lồng nhau:
Sub Practice_ForLoops()
Dim i As Integer
Dim j As Integer
For i = 1 To 1000
For j = 5 To 10
Cells(i, j) = i * j
Next j
Next i
End Sub
Trong ví dụ này, macro vẫn lặp lại qua mỗi hàng từ 1 đến 1000, nhưng có một sự thay đổi. Sau đó, nó đặt một giá trị vào các cột từ 5 đến 10 (chữ cái từ E đến J) của hàng đó dựa trên tích của biến i và biến j . Thoát khỏi vòng lặp của bạn sớm Đôi khi bạn cần thoát khỏi vòng lặp sớm khi đáp ứng các điều kiện nhất định. Làm thế nào để bạn làm điều đó? Để thoát khỏi vòng lặp For sớm, tất cả những gì bạn phải làm là nhập lệnh Exit For bên trong vòng lặp, như sau:
Sub Practice_ForLoops()
Dim i As Integer
For i = 1 To 1000
Range("A" & i) = i ^ 2
If Range("A" & i) > 100 Then
Range("D" & i) = "Vong lap thoat tren hang nay"
Exit For
End If
Next i
End Sub
Ví dụ này giới thiệu một khái niệm mà tôi chưa đề cập đến, nhưng nó có thể là điều mà các bạn đã quen thuộc: Câu lệnh if. Chúng ta sẽ sớm xem xét các câu lệnh If chi tiết hơn. Dù sao, hàng đầu tiên có ô vuông lớn hơn 100 sẽ hủy bỏ vòng lặp. Khi bạn chạy ví dụ này, bạn sẽ thấy rằng mặc dù chúng tôi đã yêu cầu vòng lặp For đi từ 1 đến 1000, nó đã dừng sau 11 vì 11 ^ 2 lớn hơn 100. (Lưu ý: Nó không dừng lại ở 10 vì 10 ^ 2 không lớn hơn 100. Nếu bạn muốn dừng lại ở 10 thì sửa >100 thành >=100)

No comments :