Hướng dẫn phân biệt phương thức Select với Activate của đối tượng Worksheet trong VBA
#Hướng #dẫn #phân #biệt #phương #thức #Select #với #Activate #của #đối #tượng #Worksheet #trong #VBA
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.
Cú pháp gọi phương thức của đối tượng Worksheet
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 đó:
- Worksheets(“ABC”) là Sheet có tên là ABC
- .Select là để gọi ra phương thức Select của Sheet ABC (có dấu chấm ngăn cách cách giữa đối tượng và phương thức của đối tượng đó)
- .Activate là để gọi ra phương thức Acivate của Sheet ABC (có dấu chấm ngăn cách cách giữa đối tượng và phương thức của đối tượng đó)
Phân biệt phương thức Select với Activate
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à:
- Bạn có thể chọn cùng 1 lúc nhiều Sheet, nhưng trong các Sheet đó chỉ có 1 Sheet được kích hoạt.
- Sheet được chọn đầu tiên trong thao tác chọn nhiều Sheet chính là Sheet được kích hoạt
- Khi đó đối tượng ActiveSheet sẽ khác với nhóm đối tượng Sheet được Select.
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:
- Chọn cùng lúc nhiều Sheet thông qua từ khóa Array ở bên trong đối tượng Sheets.
- Sheet3 và Sheet2 cùng được chọn, nhưng Sheet3 viết trước nên Sheet3 là Sheet được Activate
- Khi đó ActiveSheet chính là Sheet3. Giá trị abc được gán vào ô A1 trong Sheet3
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:
- Active: là trạng từ, chỉ 1 đối tượng nào đó đang được kích hoạt. Do đó từ khóa Active không đứng 1 mình mà đứng kèm với đối tượng: ActiveWorkbook, ActiveSheet…
- Activate: là động từ, chỉ hành động kích hoạt 1 đối tượng. Do đó từ khóa Activate luôn đứng ở vị trí sau dấu chấm của đối tượng mà nó kích hoạt: Workbook…Activate, Worksheet…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
Chuyên mục: Học Excel
Cảm ơn các bạn đã theo dõi Thủ Thuật trên đây là những chia sẻ của chúng tôi về Hướng dẫn phân biệt phương thức Select với Activate của đối tượng Worksheet trong VBA. Hy vọng bài viết này sẽ giúp ích được cho bạn. Trân trọng !!!