Cách sử dụng vòng lặp For Each trong Excel VBA

Cách sử dụng vòng lặp For Each trong Excel VBA
Độc giả như bạn giúp hỗ trợ MUO. Khi bạn mua hàng bằng các liên kết trên trang web của chúng tôi, chúng tôi có thể kiếm được hoa hồng liên kết. Đọc thêm.

Vòng lặp và VBA đi cùng nhau và vì một lý do chính đáng. Khi xử lý các đối tượng Microsoft Office như sổ làm việc, trang tính và phạm vi, các vòng lặp có thể giúp bạn chuyển đổi giữa từng đối tượng một cách dễ dàng.





Mặc dù ít nhiều tất cả các vòng lặp VBA đều hoạt động tốt với các đối tượng, nhưng vòng lặp 'cho mỗi' là một trong những tùy chọn tốt nhất để hoạt động với các tập hợp đối tượng. Nếu bạn là người mới sử dụng Excel VBA và đang tìm cách nắm vững vòng lặp for, bạn có thể học nhanh từ một số ví dụ này. Đây là tất cả những gì bạn cần biết về vòng lặp tinh túy này.





LÀM VIDEO TRONG NGÀY CUỘN ĐỂ TIẾP TỤC VỚI NỘI DUNG

Đối với cú pháp của mỗi vòng lặp

Cú pháp vòng lặp for each khá giống với vòng lặp for thông thường trong VBA Excel. Đây là cú pháp:





 For each variable_name in object_collection 

[statement]

[statement]

[statement]

Next variable_name

Vòng lặp bắt đầu với từ khóa 'cho mỗi'; bạn có thể sử dụng bất kỳ tên biến nào, theo sau là bộ sưu tập đối tượng. Đối tượng trong mỗi vòng lặp có thể là ô, phạm vi, trang tính và thậm chí cả sổ làm việc. Đó là vẻ đẹp của vòng lặp này; nó mang lại cho bạn sự linh hoạt để làm việc với các bộ sưu tập Excel khác nhau.

Vòng lặp quay vòng qua từng giá trị bộ sưu tập và lưu trữ tham chiếu trong tên biến đã xác định. Sau khi thực thi, VBA thực thi các câu lệnh được lưu trữ trong vòng lặp và di chuyển đến đối tượng tiếp theo trong bộ sưu tập (đối tượng Kế tiếp từ khóa hữu ích ở đây). Hãy hiểu cấu trúc mã với một ví dụ cơ bản.



Cách sử dụng vòng lặp For Each trong Excel VBA

Giả sử bạn muốn in một số trong các ô từ A1 đến A10. Cách tiếp cận tốt nhất là sử dụng vòng lặp for each với hàm phạm vi và để mã thực hiện việc cần thiết. Đây là cách bạn có thể thực hiện nhiệm vụ đơn giản này:

cách nhận thẻ giao dịch trên Steam
  1. Mở trình soạn thảo mã VBA bằng cách nhấn Mọi thứ + F11 .
  2. Chèn một mô-đun bằng cách nhấp vào mô-đun tùy chọn trong Chèn chuyển hướng.   Trang tính Excel có đầu ra cột's code editor
  3. Tạo một quy trình con bằng cách sử dụng lệnh sub() trong cửa sổ mô-đun trình soạn thảo mã. Đảm bảo rằng bạn gán một tên có ý nghĩa cho quy trình phụ. Đối với ví dụ này, bạn có thể sử dụng tên for_each_loop .

Bây giờ những điều cơ bản đã hết, đã đến lúc bắt đầu viết mã. Trong quy trình phụ, nhập các lệnh sau:





 Dim cell as range 

For each cell in Sheets("Sheet1").Range("A1:A10")

cell.value = 10

Next cell

Khi mã thực thi, c biến sẽ lưu trữ giá trị của A1. Tiếp theo, khi chuyển sang câu lệnh trong vòng lặp, nó sẽ đánh giá lệnh và nhập giá trị 10 vào ô đã xác định, tức là ô A1.

Cuối cùng, khi nó di chuyển đến từ khóa Tiếp theo, nó sẽ di chuyển đến giá trị tiếp theo, tức là ô A2. Vòng lặp chạy cho đến khi đến ô A10. Đây là đầu ra cuối cùng:





  Đoạn mã VBA trong trình chỉnh sửa và đầu ra excel

Sử dụng Vòng lặp với Đối tượng: Ô, Trang tính và Sổ làm việc

Excel có ba loại đối tượng chính mà bạn làm việc thường xuyên. Đây là các ô, trang tính và sổ làm việc. Đây là cách bạn có thể sử dụng vòng lặp với cả ba loại đối tượng.

các trang web hẹn hò trực tuyến miễn phí cho thanh thiếu niên

Làm việc với các ô và vòng lặp cùng nhau

Giả sử bạn muốn thêm một giá trị và một số điều kiện định dạng vào một dải ô trong Trang tính 1. Bước đầu tiên, bạn cần xác định các điều kiện trong vòng lặp, tiếp theo là các lệnh định dạng.

Nhập mã sau vào một quy trình phụ.

 Sub for_each_loop() 



Dim c As Range



For Each c In Sheets("Sheet1").Range("A1:A10")



With c

.Value = 10

.Font.Color = vbRed

.Font.Bold = True

.Font.Strikethrough = True



End With



Next c



End Sub
  Đoạn mã VBA trong trình chỉnh sửa mã hóa

Các với chức năng hữu ích khi thực hiện nhiều chức năng với một đối tượng cụ thể. Vì bạn muốn thực hiện một loạt tác vụ với biến c, nên bạn có thể kết hợp tất cả chúng bằng hàm with..end with.

windows 10 hiển thị mức sử dụng 100 đĩa

Vòng lặp cân bằng giá trị của c với từng giá trị ô và nhập giá trị là 10. Ngoài ra, nó thay đổi màu của ô thành màu đỏ, in đậm giá trị và gạch chéo giá trị đó. Sau khi hoàn thành tất cả các bước, nó sẽ chuyển sang giá trị được xác định tiếp theo trong phạm vi.

Sử dụng vòng lặp để điều khiển trang tính

Tương tự như ví dụ trên, bạn có thể sử dụng vòng lặp for each để điều khiển các trang tính. Làm cách nào để thay đổi tên của Sheet1 thành Sheet3 bằng VBA?

Bạn có thể sử dụng đoạn mã sau để đổi tên một trang tính hiện có trong Excel bằng VBA:

 Sub for_each_loop_sheets() 



For Each sht In ThisWorkbook.Sheets



If sht.Name = "Sheet1" Then



sht.Name = "Sheet3"



End If



Next sht



End Sub
  Đoạn mã VBA trong trình chỉnh sửa

Đoạn mã lặp qua từng trang tính trong sổ làm việc và kiểm tra tên của từng trang tính. Nếu gặp tên Sheet1, nó sẽ đổi thành Sheet3. Nó tiến triển qua các trang tính còn lại, nếu có, trong sổ làm việc. Khi thực thi mã đến trang cuối cùng, nó sẽ thoát khỏi vòng lặp và quy trình phụ.

Trong số một số cách sử dụng phổ biến khác, bạn có thể hợp nhất nhiều trang tính bằng VBA và cập nhật nội dung trong một trang tính bằng các vòng lặp.

Chuyển qua sổ làm việc bằng vòng lặp

Cuối cùng, bạn có thể sử dụng vòng lặp for each để chuyển qua các sổ làm việc khác nhau và thực hiện các tác vụ cụ thể. Hãy chứng minh chức năng này với một ví dụ.

Bạn có thể sử dụng các lệnh VBA để thêm ba sổ làm việc mới và đóng tất cả các sổ đang mở lại với nhau. Đây là cách bạn có thể làm điều đó:

 Sub loop_wrkbook() 



Dim wrkbook as workbook



Workbooks.Add

Workbooks.Add

Workbooks.Add



For Each wrkbook In Workbooks



wrkbook.



Next wrkbook



End Sub