Contents
- Cú Pháp Của Vòng Lặp For Each
- Cách Sử Dụng Vòng Lặp For Each Trong Excel VBA
- Sử Dụng Vòng Lặp Với Các Đối Tượng: Ô, Bảng Tính Và Sổ Làm Việc
- Làm Việc Với Ô Và Vòng Lặp
- Sử Dụng Vòng Lặp Để Điều Khiển Bảng Tính
- Chuyển Đổi Giữa Các Sổ Làm Việc Với Vòng Lặp
- Sử Dụng Câu Lệnh IF Lồng Nhau Với Vòng Lặp
- Sử Dụng Vòng Lặp Trong Excel VBA
- Kết Luận
Trong thế giới Excel VBA, vòng lặp For Each là một công cụ mạnh mẽ giúp bạn dễ dàng thao tác với các đối tượng như sổ làm việc, bảng tính, và vùng dữ liệu. Vòng lặp này đặc biệt hữu ích khi làm việc với các tập hợp đối tượng, mang lại sự linh hoạt và hiệu quả cao. Nếu bạn mới bắt đầu học Excel VBA và muốn nắm vững cách sử dụng vòng lặp For Each, hãy tham khảo các ví dụ dưới đây để nhanh chóng làm quen với nó.
Cú Pháp Của Vòng Lặp For Each
Cú pháp của vòng lặp For Each trong Excel VBA khá giống với vòng lặp for thông thường. Dưới đây là cú pháp cơ bản:
For Each tên_biến In tập_hợp_đối_tượng
[câu_lệnh]
[câu_lệnh]
[câu_lệnh]
Next tên_biến
Vòng lặp bắt đầu với từ khóa “For Each”; bạn có thể sử dụng bất kỳ tên biến nào, tiếp theo là tập hợp đối tượng. Đối tượng trong vòng lặp For Each có thể là ô, vùng, bảng tính, thậm chí là sổ làm việc. Điều này cho phép bạn làm việc linh hoạt với nhiều loại tập hợp trong Excel.
Vòng lặp sẽ duyệt qua từng giá trị trong tập hợp và lưu trữ tham chiếu vào tên biến đã định nghĩa. Sau khi thực thi, VBA sẽ thực hiện các câu lệnh bên trong vòng lặp và chuyển sang đối tượng tiếp theo trong tập hợp (từ khóa Next rất hữu ích ở đây). Hãy xem xét 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 số 10 vào các ô từ A1 đến A10. Cách tốt nhất là sử dụng vòng lặp For Each với hàm Range và để mã tự thực hiện công việc. Đây là cách bạn có thể thực hiện nhiệm vụ đơn giản này:
- Mở trình chỉnh sửa mã VBA bằng cách nhấn Alt + F11.
- Chèn một module bằng cách nhấp vào tùy chọn Module trong tab Insert.
- Tạo một thủ tục phụ bằng cách sử dụng lệnh sub() trong cửa sổ module của trình chỉnh sửa mã. Hãy đảm bảo gán một tên có ý nghĩa cho thủ tục phụ. Trong ví dụ này, bạn có thể sử dụng tên for_each_loop.
Bây giờ, khi đã xong phần cơ bản, đã đến lúc bắt đầu viết mã. Trong thủ tục 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ã được thực thi, biến cell sẽ lưu trữ giá trị của ô A1. Sau đó, khi nó chuyển đến câu lệnh bên trong vòng lặp, nó sẽ đánh giá lệnh và nhập giá trị 10 vào ô đã định nghĩa, tức là ô A1.
Cuối cùng, khi nó chuyển đến từ khóa Next, nó sẽ chuyển sang giá trị tiếp theo, tức là ô A2. Vòng lặp sẽ chạy cho đến khi đạt đến ô A10. Đây là kết quả cuối cùng:
Cột kết quả trên bảng tính Excel
Sử Dụng Vòng Lặp Với Các Đối Tượng: Ô, Bảng Tính Và Sổ Làm Việc
Excel có ba loại đối tượng chính mà bạn thường xuyên làm việc: ô, bảng tính và sổ làm việc. Dưới đây là cách bạn có thể sử dụng vòng lặp với cả ba loại đối tượng này.
Làm Việc Với Ô Và Vòng Lặp
Giả sử bạn muốn thêm giá trị và một số điều kiện định dạng cho một vùng ô trong Sheet1. Bước đầu tiên, bạn cần định nghĩa các điều kiện trong vòng lặp, sau đó là các lệnh định dạng.
Nhập mã sau trong một thủ tục 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 và kết quả trên bảng tính Excel
Hàm With rất 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 nhiệm vụ với biến c, bạn có thể kết hợp chúng lại bằng hàm With..End With.
Vòng lặp sẽ gán giá trị của c với giá trị của từng ô và nhập giá trị là 10. Ngoài ra, nó sẽ thay đổi màu chữ của ô thành đỏ, làm đậm giá trị và gạch ngang. Khi hoàn thành tất cả các bước, nó sẽ chuyển sang giá trị tiếp theo trong vùng.
Sử Dụng Vòng Lặp Để Điều Khiển Bảng 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 bảng tính. Ví dụ, bạn muốn thay đổi tên của Sheet1 thành Sheet3 bằng VBA?
Bạn có thể sử dụng mã sau để đổi tên một bảng 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 mã
Mã sẽ duyệt qua từng bảng tính trong sổ làm việc và kiểm tra tên của từng bảng tính. Nếu gặp tên Sheet1, nó sẽ thay đổi thành Sheet3. Nó tiếp tục duyệt qua các bảng tính còn lại, nếu có, trong sổ làm việc. Khi mã thực thi đến bảng tính cuối cùng, nó sẽ thoát khỏi vòng lặp và thủ tục phụ.
Ngoài ra, bạn có thể hợp nhất nhiều bảng tính bằng VBA và cập nhật nội dung trong một bảng tính duy nhất bằng vòng lặp.
Chuyển Đổi Giữa Các Sổ Làm Việc Với Vòng Lặp
Cuối cùng, bạn có thể sử dụng vòng lặp For Each để chuyển đổi giữa các sổ làm việc và thực hiện các nhiệm vụ cụ thể. Hãy minh họa 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ổ làm việc đang mở cùng một lúc. Đây là cách bạn có thể thực hiện:
Sub loop_wrkbook()
Dim wrkbook As Workbook
Workbooks.Add
Workbooks.Add
Workbooks.Add
For Each wrkbook In Workbooks
wrkbook.Close
Next wrkbook
End Sub
Đoạn mã VBA trong trình chỉnh sửa
Mã trên sẽ đóng cả sổ làm việc macro của bạn; hãy đảm bảo bạn đã lưu các mã của mình trước khi chạy mã này.
Vì vòng lặp có nhiều công dụng, bạn cũng có thể tổng hợp dữ liệu từ nhiều sổ làm việc vào một sổ làm việc duy nhất.
Sử Dụng Câu Lệnh IF Lồng Nhau Với Vòng Lặp
Tương tự như ví dụ trên, bạn có thể sử dụng câu lệnh IF trong vòng lặp để kiểm tra các điều kiện cụ thể. Hãy thay đổi màu nền của ô dựa trên giá trị của ô.
Giả sử có một số số ngẫu nhiên trong các ô từ A1 đến A20. Bạn có thể viết một vòng lặp để duyệt qua từng ô trong vùng; nếu giá trị của ô nhỏ hơn 10, màu nền của ô sẽ thay đổi thành đỏ. Nếu giá trị của ô lớn hơn 10, nó sẽ chuyển thành màu xanh lá cây. Sử dụng mã sau cho mục đích này:
Sub loop_w_if()
Dim c As Range
For Each c In Sheets("Sheet4").Range("A1:A20")
If c.Value < 10 Then
c.Interior.ColorIndex = 3
Else
c.Interior.ColorIndex = 4
End If
Next c
End Sub
Đây là kết quả cuối cùng:
Sử dụng vòng lặp For Each và câu lệnh IF trong Excel VBA
Sử Dụng Vòng Lặp Trong Excel VBA
Excel VBA không chỉ giới hạn ở vòng lặp For Each. Có nhiều loại vòng lặp hữu ích khác giúp bạn thực hiện các chức năng khác nhau một cách dễ dàng. Hãy tạm biệt những công việc thủ công nhàm chán, vì các vòng lặp của VBA như vòng lặp for, do while, và do until sẽ giúp cuộc sống của bạn trở nên dễ dàng hơn.
-
Vòng lặp For Each có thể sử dụng với loại đối tượng nào trong Excel VBA?
- Vòng lặp For Each có thể sử dụng với các đối tượng như ô, vùng, bảng tính và sổ làm việc.
-
Làm thế nào để mở trình chỉnh sửa mã VBA trong Excel?
- Bạn có thể mở trình chỉnh sửa mã VBA bằng cách nhấn Alt + F11.
-
Có thể sử dụng vòng lặp For Each để định dạng ô không?
- Có, bạn có thể sử dụng vòng lặp For Each để thay đổi giá trị và định dạng của ô, như thay đổi màu chữ, làm đậm, gạch ngang.
-
Làm thế nào để thay đổi tên bảng tính bằng VBA?
- Bạn có thể sử dụng vòng lặp For Each để duyệt qua các bảng tính và sử dụng câu lệnh If để thay đổi tên bảng tính khi gặp tên mong muốn.
-
Có thể sử dụng vòng lặp For Each để đóng tất cả các sổ làm việc không?
- Có, bạn có thể sử dụng vòng lặp For Each để duyệt qua tất cả các sổ làm việc đang mở và đóng chúng bằng lệnh Close.
-
Làm thế nào để sử dụng câu lệnh IF trong vòng lặp For Each?
- Bạn có thể sử dụng câu lệnh IF bên trong vòng lặp For Each để kiểm tra các điều kiện cụ thể và thực hiện các hành động dựa trên các điều kiện đó.
-
Có thể tự động hóa nhiều nhiệm vụ với vòng lặp For Each không?
- Có, vòng lặp For Each rất hữu ích trong việc tự động hóa nhiều nhiệm vụ phức tạp trong Excel VBA.
Kết Luận
Vòng lặp For Each trong Excel VBA là một công cụ mạnh mẽ giúp bạn dễ dàng thao tác với các đối tượng khác nhau trong Excel. Bằng cách sử dụng vòng lặp này, bạn có thể tự động hóa nhiều nhiệm vụ phức tạp, từ việc thay đổi giá trị và định dạng ô đến việc điều khiển bảng tính và sổ làm việc. Hãy tiếp tục khám phá và thực hành để nâng cao kỹ năng VBA của bạn.
Để tìm hiểu thêm về các mẹo và thủ thuật Excel VBA, hãy truy cập Tạp Chí Mobile.