Làm thế nào để sử dụng VBA cho Mỗi vòng lặp? (với Ví dụ Excel)

Excel VBA cho mỗi vòng lặp

VBA For Each Loop đi qua tất cả tập hợp các đối tượng hoặc mục và thực hiện một tập hợp các hoạt động tương tự. Nó sẽ xem xét tất cả các đối tượng được chỉ định có sẵn và thực hiện hoạt động được hướng dẫn trong mỗi đối tượng.

Trong VBA, bắt buộc phải hiểu các vòng lặp. Một vòng lặp cho phép bạn thực hiện cùng một loại hoạt động cho nhiều ô hoặc đối tượng trong excel. Trong bài viết hôm nay, chúng ta sẽ tập trung vào cơ chế For Each Loop.

Cú pháp

Mỗi vòng lặp có thể lặp lại qua tất cả các tập hợp các đối tượng hoặc mục. Một nhóm không là gì ngoài “Tất cả các sổ làm việc đã mở”, “Tất cả các trang tính trong một sổ làm việc”, “Tất cả tập hợp các hình dạng và biểu đồ trong sổ làm việc”.

Hãy xem cú pháp.

Đối với mỗi đối tượng trong bộ sưu tập phải làm gì? Đối tượng tiếp theo

Ví dụ: Bạn có 10 trang tính trong sổ làm việc của mình và bạn muốn ẩn tất cả các trang tính ngoại trừ trang bạn đang ở trong đó. Bạn có thể ẩn theo cách thủ công không? Có, bạn có thể, nhưng nếu bạn có 100 tờ như vậy thì sao? Đó không phải là một công việc tẻ nhạt và tốn thời gian phải làm sao? Bạn có thể làm điều này bằng cách sử dụng cho mỗi vòng lặp.

Cách sử dụng For Each Loop trong VBA? (Ví dụ)

Ví dụ # 1 - Chèn cùng một văn bản trong tất cả các trang tính

Chúng ta sẽ xem cách sử dụng FOR EACH trong VBA với một ví dụ đơn giản. Giả sử bạn có 5 trang tính trong một sổ làm việc và bạn muốn chèn từ “Xin chào” vào tất cả các trang tính trong ô A1.

Chúng tôi có thể làm điều này với CHO TỪNG LOOP. Một điều bạn cần nhớ ở đây là chúng tôi đang thực hiện hoạt động này trong từng trang tính, không phải trong cùng một trang tính. Làm theo các bước dưới đây để viết mã VBA.

Bước 1: Khởi động macro excel.

Mã:

Sub For_Each_Example1 () End Sub

Bước 2: Vì chúng tôi đang đề cập đến trang tính, hãy khai báo biến là “Trang tính”.

Mã:

Sub For_Each_Example1 () Dim Ws As Worksheet End Sub

Bước 3: Bây giờ, sử dụng FOR EACH LOOP, chúng ta cần tham chiếu từng trang tính trong sổ làm việc đang hoạt động.

Mã:

Sub For_Each_Example1 () Dim Ws As Worksheet Cho Mỗi Ws Trong ActiveWorkbook.Worksheets Next Ws End Sub

Bước 4: Bây giờ, viết những gì chúng ta muốn làm trong mỗi trang tính. Trong mỗi trang tính, chúng ta cần đặt từ “Xin chào” vào ô A1.

Mã:

Sub For_Each_Example1 () Dim Ws As Worksheet Cho Mỗi W trong ActiveWorkbook.Worksheets Ws.Range ("A1"). Value = "Hello" Next Ws End Sub

Bước 5: Bây giờ chạy mã này theo cách thủ công thông qua tùy chọn hoặc nhấn phím tắt F5. Không quan trọng bạn có bao nhiêu tờ; nó sẽ chèn Từ “Xin chào” vào tất cả các trang tính.

Ví dụ # 2 - Ẩn Tất cả Trang tính

Như đã nói trước đó trong bài viết, điều gì sẽ xảy ra nếu bạn có hàng trăm trang tính cần ẩn ngoại trừ trang bạn đang ở. Sử dụng Đối với mỗi vòng lặp, chúng ta có thể ẩn tất cả các trang tính trong excel.

Bước 1: Bắt đầu macro với tên của bạn.

Mã:

Sub For_Each_Example2 () End Sub

Bước 2: Khai báo biến là “ Ws”.

Mã:

Sub For_Each_Example2 () Dim Ws As Worksheet End Sub

Bước 3: Bây giờ, trong mỗi trang tính, việc bạn cần làm là ẩn trang tính.

Mã:

Sub For_Each_Example2 () Dim Ws As Worksheet Cho mỗi Ws Trong ActiveWorkbook.Worksheets Ws.Vosystem = xlSheetVeryHidden Next Ws End Sub

Bước 4: Nhưng nếu bạn chạy đoạn mã trên, nó sẽ cố gắng ẩn tất cả các trang tính, nhưng excel cần ít nhất một trang tính hiển thị. Vì vậy, chúng ta cần cho biết trang tính nào không được ẩn.

Mã:

Sub For_Each_Example2 () Dim Ws As Worksheet Cho mỗi Ws Trong ActiveWorkbook.Worksheets If Ws.Name "Main Sheet" Then Ws.Vosystem = xlSheetVeryHidden End If Next Ws End Sub

hiệu toán tử có nghĩa là không bằng trong VBA .

So code says when you are looping through all the worksheets in the active workbook, hide only if the sheet name is not equal to the sheet name of Main Sheet.

This can be done by using the IF statement in VBA. Write the code as IF Ws.Name “Main Sheet” Then hide or if it is equal to the sheet name “Main Sheet,” then don’t hide.

Step 5: Now run the code using the F5 key or manually. Then, it will hide all the worksheets except the one named “Main Sheet.”

Example #3 - Unhide All the Sheets

We have seen how to hide all sheets except the one we are in. Similarly, we can unhide all the worksheets as well.

We need to change the code from xlSheetVeryHidden to xlSheetVisible.

Code:

Sub For_Each_Example3() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Visible = xlSheetVisible Next Ws End Sub

Here we don’t need the IF condition because we are unhiding all the sheets. If you don’t want to unhide any specific sheet, then you can use the IF condition and supply the sheet name.

Example #4 - Protect and UnProtect All the Sheets

Protect All Sheets: We can protect all the sheets in the workbook with just a piece of code. All the principle is the same only thing we need to do here is instead of Ws. Visible, we need to put the code Ws. Protect and type the password.

Code:

Sub For_Each_Example4() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Protect Password:="Excel@2019" Next Ws End Sub

Bỏ bảo vệ tất cả các trang tính: Trên một lưu ý tương tự, sử dụng VBA, chúng tôi cũng có thể bỏ bảo vệ tất cả các trang tính được bảo vệ trong sổ làm việc. Chúng ta cần đặt từ Unprotect và mật khẩu.

Mã:

Sub For_Each_Example6 () Dim Ws as Worksheet cho mỗi Ws trong ActiveWorkbook.Worksheets Ws.Unprotect Password: = "Excel @ 2019" Next Ws End Sub

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

  • Mỗi là bộ sưu tập các đối tượng.
  • Nó sẽ xem xét tất cả các đối tượng được chỉ định trong sổ làm việc được chỉ định.
  • Trong khi khai báo biến, chúng ta cần tham chiếu đến đối tượng nào - ví dụ: Trang tính, Sổ làm việc, Biểu đồ, v.v.

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