Video: Day 19 500k 2025
VBA hỗ trợ một loại khác lặp lại trong Excel 2016: looping qua mỗi đối tượng trong một bộ sưu tập của các đối tượng. Một bộ sưu tập, như bạn biết, bao gồm một số đối tượng cùng loại. Ví dụ, Excel có một bộ sưu tập của tất cả các workbooks mở (bộ sưu tập Workbooks), và mỗi workbook có một bộ sưu tập các bảng tính (bộ sưu tập Worksheets).
Khi bạn cần lặp lại từng đối tượng trong một bộ sưu tập, hãy sử dụng cấu trúc For Each-Next. Ví dụ sau vòng qua mỗi bảng trong bảng tính đang hoạt động và xóa bảng tính nếu nó trống:
Xóa các Tập tin Xóa dưới () Dim WkSht Như Ứng dụng Bảng tính. DisplayAlerts = Sai cho mỗi WkSht Trong ActiveWorkbook. Worksheets Nếu WorksheetFunction. CountA (WkSht. Cells) = 0 Sau đó WkSht. Xóa kết thúc Nếu Tiếp theo Ứng dụng WkSht. DisplayAlerts = True End Sub
Trong ví dụ này, biến WkSht là một biến đối tượng đại diện cho mỗi bảng tính trong bảng tính. Không có gì đặc biệt về tên biến WkSht; bạn có thể sử dụng bất kỳ tên biến nào mà bạn thích.
Mã vòng lặp thông qua mỗi bảng tính và xác định một bảng trống bằng cách đếm các ô nonblank. Nếu số đó là số không, thì tờ này trống, và nó đã bị xóa. Lưu ý rằng cài đặt DisplayAlerts đã bị tắt trong khi vòng lặp đang làm việc của nó. Nếu không có tuyên bố đó, Excel bật lên một cảnh báo mỗi khi một tấm là về để được xóa.
Nếu tất cả các bảng tính trong bảng làm việc trống rỗng, bạn sẽ gặp lỗi khi Excel cố gắng xóa bảng tính duy nhất. Thông thường, bạn sẽ viết mã để xử lý tình huống đó.
Đây là ví dụ khác cho mỗi ví dụ tiếp theo. Thủ tục này sử dụng một vòng lặp để ẩn tất cả các bảng tính trong bảng tính hoạt động trừ các hoạt động tờ.
Tiểu Che giấu () Dim Sht Như Worksheet Đối với Mỗi Sht Trong ActiveWorkbook. Worksheets If Sht. Tên ActiveSheet. Tên Sau đó Sht. Visible = xlSheetHidden End If Tiếp theo Cuối Sht End Sub
Thủ tục HideSheets kiểm tra tên bảng. Nếu nó không giống như tên của bảng hoạt động, tờ đó sẽ được ẩn đi. Lưu ý rằng thuộc tính Visible không phải là Boolean. Thuộc tính này có thể thực sự chiếm bất kỳ trong ba giá trị, và Excel cung cấp ba hằng số cài sẵn. Nếu bạn tò mò về khả năng thứ ba (xlVeryHidden), kiểm tra hệ thống trợ giúp.
Những gì ẩn sau đó phải được ẩn, do đó, đây là một macro mà ẩn tất cả các bảng tính trong bảng tính hoạt động:
Sub UnhideSheets () Dim Sht Như Worksheet cho mỗi Sht Trong ActiveWorkbook. Các bảng tính Sht.Visible = xlSheetVisible Tiếp theo Cuối Sht End
Không có gì đáng ngạc nhiên, bạn có thể tạo các nested For Each-Next. Thủ tục CountBold lướt qua mỗi ô trong dãy đã sử dụng trên mỗi trang tính trong mỗi bảng tính mở và hiển thị một số của các ô được định dạng là đậm:
Sub CountBold () Dim WBook Như Workbook Dim WSheet Như Worksheet Dim Cell Như Range Dim Cnt Như Long Đối với Mỗi WBook Trong Workbooks Đối với Mỗi WSheet Trong WBook. Worksheets Đối với Mỗi Tế bào Trong WSheet. UsedRange If Cell. Phông chữ. Bold = True Sau đó, Cnt = Cnt + 1 ô tiếp theo Tờ kế tiếp Tiếp theo WBook MsgBox Cnt & "tìm thấy các ô có dấu" End Sub