Khi lập trình trong VBA liên quan tới nhiều Worksheet trong 1 Workbook (1 file Excel), có thể bạn sẽ thấy có 2 phương thức khá giống nhau là Select và Activate. Nhưng sự giống nhau này đôi khi gây nhầm lẫn cho chúng ta. Trong bài viết này, Học Excel Online sẽ giúp các bạn phân biệt phương thức Select với Activate của đối tượng Worksheet trong VBA.
Xem nhanh
Trong bài viết Hướng dẫn cách viết code với đối tượng Worksheet trong VBA Excel chúng ta đã tìm hiểu về cú pháp gọi phương thức của đối tượng Worksheet như sau:
Worksheets(“ABC”).Select
Worksheets(“ABC”).Activate
Trong đó:
Select là việc bạn chọn tới 1 Sheet.
Activate là việc bạn kích hoạt tới 1 sheet.
Nếu chỉ làm việc với duy nhất 1 Sheet thì Sheet được chọn chính là Sheet được kích hoạt.
Sự khác nhau cơ bản là:
Ví dụ:
Trong 1 Workbook có 3 Sheet gồm: Sheet1, Sheet2, Sheet3
Chọn cùng 1 lúc Sheet2 và Sheet3, trong đó Sheet3 được viết trược, ta sử dụng cú pháp sau:
Sheets(Array(“Sheet3”, “Sheet2”)).Select
Gán giá trị abc vào ô A1 trong Sheet đang được kích hoạt, ta sử dụng cú pháp sau:
ActiveSheet.Range(“A1”).Value = “abc”
Khi viết trong cùng 1 Sub ta có:
Khi chạy Sub Test_Select_MultiSheet, kết quả thu được là chỉ có duy nhất giá trị abc được điền vào ô A1 trong Sheet3, còn Sheet2 thì không có nội dung gì.
File ví dụ các bạn có thể tải về tại đây: http://bit.ly/2TgwCt8
Như vậy qua ví dụ trên, chúng ta có thể thấy:
Do đó khi làm việc với nhiều Worksheet trong VBA, chúng ta hết sức lưu ý phân biệt giữa 2 phương thức này để đảm bảo kết quả lập trình đúng theo ý muốn.
* Chú ý:
Phân biệt 2 từ khóa Active và Activate:
Ngoài ra các bạn có thể tham khảo thêm các bài viết:
Hướng dẫn cách phân biệt ActiveWorkbook với ThisWorkbook khi lập trình VBA Excel
Hướng dẫn cách viết code với đối tượng Worksheet trong VBA Excel
Hướng dẫn cách viết code với đối tượng Range trong VBA Excel