VBA cho từng ví dụ (Tham khảo nhanh)

Hướng dẫn này sẽ chỉ cho bạn các ví dụ về cách sử dụng For Each Loop trong VBA. Nhấp vào đây để tìm hiểu thêm về các vòng lặp nói chung.

Cho mỗi vòng lặp

Vòng lặp For Each cho phép bạn lặp lại mỗi đối tượng trong một bộ sưu tập:

  • Tất cả các ô trong một phạm vi
  • Tất cả các trang tính trong một sổ làm việc
  • Tất cả các sổ làm việc đang mở
  • Tất cả các hình dạng trong một trang tính
  • Tất cả các mục trong một mảng
  • và hơn thế nữa!

Đối với mỗi: Ví dụ cơ bản

Các ví dụ này sẽ trình bày cách thiết lập vòng lặp For Each để lặp qua các loại đối tượng khác nhau.

Vòng qua các ô

Quy trình này sẽ lặp qua từng ô trong phạm vi A1: A10, đặt ô ở bên phải bằng với chính nó.

12345678 Sub ForEachCell ()Làm mờ ô dưới dạng phạm viĐối với mỗi ô trong trang tính ("Sheet1"). Phạm vi ("A1: A10")Cell.Offset (0, 1) .value = Cell.valueÔ tiếp theoKết thúc Sub

Vòng qua trang tính

Quy trình này sẽ lặp qua từng trang tính trong Sổ làm việc, bỏ ẩn từng trang tính.

12345678 Sub ForEachSheets ()Dim ws As WorksheetCho mỗi ws trong trang tínhws.Vible = TrueTrang tiếp theoKết thúc Sub

Loop Through Workbooks

Quy trình này sẽ lặp lại qua từng sổ làm việc, đóng từng sổ một.

12345678 Sub ForEachWorkbooks ()Dim wb As WorkbookĐối với mỗi wb trong sổ làm việcwb.CloseTuần tiếp theoKết thúc Sub

Loop Through Shapes

Quy trình này sẽ lặp qua từng hình dạng trong Sheet1, xóa từng hình dạng.

12345678 Sub ForEachShape ()Dim Shp như hình dạngĐối với mỗi Shp Trong Trang tính ("Trang 1"). Hình dạngShp.DeleteShp tiếp theoKết thúc Sub

Vòng qua các biểu đồ

Quy trình này sẽ lặp qua từng Biểu đồ trong Sheet1, xóa từng biểu đồ.

12345678 Sub ForEachCharts ()Dim cht As ChartObjectĐối với mỗi cht Trong Trang tính ("Trang 1"). ChartObjectscht.DeleteCht tiếp theoKết thúc Sub

Vòng qua PivotTables

Quy trình này sẽ lặp qua từng PivotTable trong Sheet1, xóa từng

12345678 Sub ForEachPivotTables ()Làm mờ pvt dưới dạng PivotTableĐối với mỗi pvt Trong Trang tính ("Trang 1"). PivotTablespvt.ClearTablePvt tiếp theoKết thúc Sub

Vòng qua các bảng

Quy trình này sẽ lặp qua từng Bảng trong Sheet1, xóa từng bảng.

12345678 Sub ForEachTables ()Dim tbl As ListObjectĐối với mỗi tbl Trong Trang tính ("Trang 1"). ListObjectstbl.DeleteTbl tiếp theoKết thúc Sub

Lặp qua các mục trong mảng

Quy trình này sẽ lặp qua từng mục trong Mảng, hiển thị từng giá trị trong hộp thư,

12345678910 Sub ForEachItemInArray ()Dim arrValue làm biến thểLàm mờ mục dưới dạng biến thểarrValue = Mảng ("Mặt hàng 1", "Mặt hàng 2", "Mặt hàng 3")Đối với mỗi mục trong arrValueMục MsgBoxMục tiếp theoKết thúc Sub

Vòng qua các con số

Thủ tục này sẽ lặp qua từng số trong một Mảng, hiển thị từng giá trị trong hộp thư,

12345678910111213 Sub ForEachNumberInNumbers ()Dim arrNumber (1 đến 3) dưới dạng số nguyênDim num như một biến thểarrNumber (1) = 10arrNumber (2) = 20arrNumber (3) = 30Đối với mỗi số trong arrNumberMsgbox NumSố tiếp theoKết thúc Sub

Đối với mỗi trình tạo vòng lặp

Các ví dụ trong bài viết này được xây dựng với Trình tạo vòng lặp trong của chúng tôi Bổ trợ VBA: AutoMacro.

Các Trình tạo vòng lặp làm cho nó rất dễ dàng tạo ra mã để lặp qua các đối tượng. AutoMacro cũng chứa nhiều khác Trình tạo mã, Rộng Thư viện mãvà mạnh mẽ Công cụ mã hóa.

Cho mỗi - Nếu

Bạn cũng có thể sử dụng Câu lệnh If trong Vòng lặp để kiểm tra xem các đối tượng có đáp ứng các tiêu chí nhất định hay không, chỉ thực hiện các hành động trên các đối tượng đáp ứng tiêu chí đó. Đây là một ví dụ về lặp qua từng ô trong một phạm vi:

Đối với mỗi ô trong phạm vi - Nếu

1234567891011121314 Sub If_Loop ()Làm mờ ô dưới dạng phạm viĐối với mỗi ô trong phạm vi ("A2: A6")Nếu Cell.Value> 0 ThìCell.Offset (0, 1) .Value = "Tích cực"ElseIf Cell.Value <0 Sau đóCell.Offset (0, 1) .Value = "Phủ định"KhácCell.Offset (0, 1) .Value = "Zero"Kết thúc nếuÔ tiếp theoKết thúc Sub

Đối với từng ví dụ phổ biến

Đóng tất cả sổ làm việc

Quy trình này sẽ đóng tất cả các sổ làm việc đang mở, lưu các thay đổi.

123456789 Sub CloseAllWorkbooks ()Dim wb As WorkbookĐối với mỗi wb trong sổ làm việcwb.Close SaveChanges: = TrueTuần tiếp theoKết thúc Sub

Ẩn tất cả các trang tính

Thủ tục này sẽ ẩn tất cả các trang tính.

12345678 Sub HideAllSheets ()Dim ws As WorksheetCho mỗi ws trong trang tínhws.Vible = xlSheetHiddenTuần tiếp theoKết thúc Sub

Hiện tất cả các trang tính

Quy trình này sẽ hiện tất cả các trang tính.

12345678 Sub UnhideAllSheets ()Dim ws As WorksheetCho mỗi ws trong trang tínhws.Vible = xlSheetVosystemTuần tiếp theoKết thúc Sub

Bảo vệ tất cả các trang tính

Quy trình này sẽ bảo vệ tất cả các trang tính.

12345678 Sub ProtectAllSheets ()Dim ws As WorksheetCho mỗi ws trong trang tínhws.Protect Password: = "…"Tuần tiếp theoKết thúc Sub

Bỏ bảo vệ tất cả các trang tính

Quy trình này sẽ bỏ bảo vệ tất cả các trang tính.

12345678 Sub UnprotectAllSheets ()Dim ws As WorksheetCho mỗi ws trong trang tínhws.Unprotect Mật khẩu: = "…"Tuần tiếp theoKết thúc Sub

Xóa tất cả các hình dạng trên tất cả các trang tính

Quy trình này sẽ xóa tất cả các hình dạng trong sổ làm việc.

123456789101112 Sub DeleteAllShapesOnAllWorksheets ()Làm mờ trang tính dưới dạng trang tínhDim Shp như hình dạngCho mỗi ws trong trang tínhĐối với mỗi Shp Trong ws.Shp.DeleteShp tiếp theoTuần tiếp theoKết thúc Sub

Làm mới tất cả PivotTable

Quy trình này sẽ làm mới tất cả PivotTable trên một trang tính.

12345678 Sub RefreshAllPivotTables ()Làm mờ pvt dưới dạng PivotTableĐối với mỗi pvt Trong Trang tính ("Trang tính1"). PivotTablespvt.RefreshTablePvt tiếp theoKết thúc Sub

Sử dụng cho mỗi trong Access VBA

Vòng lặp For Each hoạt động theo cùng một cách trong Access VBA cũng như trong Excel VBA. Ví dụ sau sẽ xóa tất cả các bảng trong cơ sở dữ liệu hiện tại.

123456789 Sub RemoveAllTables ()Làm mờ tdf dưới dạng TableDefLàm mờ dbs dưới dạng cơ sở dữ liệuĐặt dbs = CurrentDbĐối với mỗi tdf Trong dbs.TableDefsDoCmd.DeleteObject tdf.NameVòngĐặt dbs = Không có gìKết thúc Sub

Bạn sẽ giúp sự phát triển của trang web, chia sẻ trang web với bạn bè

wave wave wave wave wave