Vòng lặp VBA - Danh sách 4 loại vòng lặp hàng đầu (có ví dụ)

Vòng lặp VBA trong Excel

Vòng lặp được sử dụng phổ biến trong tất cả các ngôn ngữ lập trình, trong đó có một nhu cầu nhất định hoặc một tiêu chí nào đó khi chúng ta cần một đoạn mã nào đó để chạy trong một thời điểm nhất định chúng ta sử dụng vòng lặp cho các mã đó, hiện nay có nhiều loại vòng lặp trong VBA chẳng hạn như Do while, Do Until, For Loop và For mỗi vòng lặp, các vòng lặp này giúp mã thực thi cho đến khi điều kiện được đáp ứng.

Hãy để tôi đưa ra tuyên bố này ngay từ đầu. “Nếu bạn muốn thành thạo trong VBA, bạn cần phải hoàn thành khái niệm thành thạo về vòng lặp trong macro VBA.”

Vòng lặp không có gì khác ngoài việc đi qua một loạt các ô, đi qua một loạt các đối tượng để lặp lại cùng một nhiệm vụ cho tập hợp các ô hoặc đối tượng. Thay vì thực hiện tác vụ trong một tập hợp các dòng mã riêng biệt bằng cách sử dụng các vòng lặp, chúng ta có thể rút ngắn độ dài của mã đến mức thấp nhất có thể.

Danh sách 4 loại vòng lặp VBA hàng đầu

  1. Cho vòng tiếp theo
  2. Đối với mỗi vòng lặp
  3. Do While Loop
  4. Do Until Loop

Chúng ta hãy xem chi tiết từng loại này.

Loại # 1 - Đối với Vòng lặp Tiếp theo

Vòng lặp For Next cho phép chúng ta lặp qua phạm vi ô và thực hiện cùng một tác vụ cho mọi ô được chỉ định trong vòng lặp. Ở đây chúng ta cần cho biết số bắt đầu và số kết thúc.

Thí dụ

Ví dụ, nếu bạn muốn chèn số sê-ri từ 1 đến 10, dưới đây là cách chèn số sê-ri truyền thống.

Sub SerialNumber ()

Dải (“A1”). Giá trị = 1
Dải (“A2”). Giá trị = 2
Dải (“A3”). Giá trị = 3
Dải (“A4”). Giá trị = 4
Dải (“A5”). Giá trị = 5
Dải (“A6”). Giá trị = 6
Dải (“A7”). Giá trị = 7
Dải (“A8”). Giá trị = 8
Dải (“A9”). Giá trị = 9
Dải (“A10”). Giá trị = 10

Kết thúc Sub

Trông ổn, phải không? Nhưng vấn đề ở đây là chúng ta chỉ cần 10 lần thực hiện nhiệm vụ này. Nhưng hãy tưởng tượng nếu bạn muốn chèn 100 hoặc 1000 số, bạn có thể viết mã 100 hay 1000 dòng. Điều đó là không thể, và đó là nơi mà vẻ đẹp của vòng lặp For Next trở nên hữu ích.

Bước 1: Mở macro và khai báo biến iInteger.

Sub Insert_Serial_Number ()

Dim i As Integer

Kết thúc Sub

Bước 2: Bây giờ hãy mở For Loop . Ở đây đề cập đến điểm bắt đầu và kết thúc của vòng lặp bằng cách sử dụng biến i.

Bước 3: Bây giờ viết mã mà bạn muốn thực hiện. Chúng ta cần chèn các số từ 1 đến 10 trong các ô A1 đến A10. Thay vì áp dụng phương pháp Phạm vi, hãy áp dụng phương pháp Ô.

Nó đang hỏi số hàng vì lúc đầu chúng ta đã khai báo biến i là một số nguyên. Giá trị của nó là 1. Vì vậy, hãy đề cập đến tôi thích số hàng của bạn và 1 là số cột của bạn.

Bây giờ giá trị của giá trị ô hiện tại phải là một, thay vì đề cập đến số một, hãy đề cập đến i là giá trị. Bởi vì mỗi khi vòng lặp chạy, giá trị của tôi sẽ tăng lên 1.

Bây giờ hãy nhấn phím F8 để từng bước một. Nhấn F8 cho đến khi đến vòng lặp For.

Màu vàng này là dấu hiệu cho biết dòng mã đã chọn sắp chạy. Đặt con trỏ vào I và nó sẽ hiển thị giá trị bằng 0.

Bây giờ nhấn phím F8 một lần nữa và đặt con trỏ vào i & bây giờ giá trị là 1.

Vì vậy, các giá trị của i ở mọi nơi bây giờ bằng 1. “ Cells (I, 1) .value = I” có nghĩa là Cell (1, 1) .value = 1.

Nhấn phím F8 và xem giá trị trong ô A1. Bạn phải thấy 1 trong ô A1.

Bây giờ, nếu bạn nhấn phím F8, nó sẽ quay trở lại vòng lặp For một lần nữa vì giới hạn cuối của biến i là 10. Lần này giá trị I sẽ là 2.

Đối với vòng lặp Tiếp theo sẽ chạy trong 10 lần và chèn các số sê-ri từ 1 đến 10.

Loại # 2 - Cho mỗi vòng lặp

Đối với Mỗi vòng lặp trong VBA là để lặp qua một tập hợp các đối tượng. Đối với vòng lặp tiếp theo lặp qua các ô và thực hiện tác vụ và Đối với mỗi vòng lặp lặp qua các đối tượng như Trang tính, Biểu đồ, Sổ làm việc, Hình dạng.

Sử dụng vòng lặp này, chúng ta có thể đi qua tất cả các trang tính và thực hiện một số tác vụ. Ví dụ: bạn có thể lặp qua tất cả các trang tính để ẩn và hiện các trang tính.

Ví dụ 1

Nếu bạn muốn ẩn tất cả các trang tính ngoại trừ trang tính mà bạn đang làm việc, bạn sẽ thực hiện như thế nào? Nếu bạn có 20 trang tính trong sổ làm việc, đó là một quá trình tốn nhiều thời gian. Nhưng với vòng lặp FOR EACH, chúng ta có thể thực hiện nhiệm vụ này.

Tôi có 5 trang tính và tôi muốn ẩn tất cả các trang tính trừ trang tính “Chính” mã dưới đây sẽ thực hiện nhiệm vụ cho tôi.

Sub To_Hide_All_Sheet ()

Dim Ws As Worksheet

Đối với mỗi W trong ActiveWorkbook.Worksheets

If Ws.Name “Main” thì
Ws.Vible = xlSheetVeryHidden
End If

Ws tiếp theo

Kết thúc Sub

Ví dụ số 2

Nếu bạn muốn hiện tất cả các trang bị ẩn, thì đoạn mã dưới đây sẽ thực hiện công việc cho bạn.

Sub To_UnHide_Specific_Sheet ()

Dim Ws As Worksheet

Đối với mỗi W trong ActiveWorkbook.Worksheets

Ws.Vible = xlSheetVosystem

Ws tiếp theo

Kết thúc Sub

Loại # 3 - Thực hiện trong khi lặp lại

Vòng lặp Do While thực hiện nhiệm vụ trong khi điều kiện đã cho là TRUE, và một khi điều kiện trở thành FALSE, nó sẽ ngừng lặp lại. Không giống như hai vòng lặp khác, Do While kiểm tra điều kiện ở cuối vòng lặp chứ không phải ở đầu.

Tôi sẽ chỉ cho bạn ví dụ về việc chèn số sê-ri với vòng lặp Do While.

Sub Do_While_Example ()

Dim i As Integer

i = 1
Do While i <11
Cells (i, 1) .Value = i
i = i + 1
Loop

Kết thúc Sub

Vòng lặp trên sẽ chạy khi tôi nhỏ hơn 11 và tiếp tục chèn các số sê-ri. Thời điểm tôi lớn hơn 11, nó sẽ ngừng lặp lại.

Loại # 4 - Do Until Loop

Không giống như vòng lặp Do While, vòng lặp Do Until không chạy trong khi điều kiện là TRUE; đúng hơn, nó lặp lại cho đến khi điều kiện là FALSE. Ví dụ, hãy xem đoạn mã dưới đây.

Sub Do_Until_Example ()

Dim i As Integer

i = 1
Do Until i = 11
Cells (i, 1) .Value = i
i = i + 1
Loop

Kết thúc Sub

Sự khác biệt duy nhất giữa vòng lặp Do While & Do Until là toán tử mà chúng tôi chỉ định. Trong Do, Trong khi chúng ta đã đề cập đến việc chạy vòng lặp trong khi i nhỏ hơn (<), 11 nhưng trong vòng lặp do Until, chúng ta đã đề cập đến việc chạy vòng lặp Cho đến khi i bằng (=) đến 11.

Những điều cần ghi nhớ

  • Có một ví dụ về vòng lặp VBA trong Excel nâng cao hơn, nhưng chúng tôi sẽ trình bày chi tiết từng ví dụ trong một bài viết riêng biệt.
  • Mỗi vòng lặp dành cho các biến đối tượng.
  • Mặc dù Do While & Do Until trông giống nhau nhưng điều kiện là rất quan trọng.
  • Vòng lặp là khái niệm rất quan trọng.

thú vị bài viết...