Hướng dẫn phân biệt phương thức Select với Activate của đối tượng Worksheet trong VBA

Chia sẻ bài viết này:
  •  
  •  
  •  
  •  
  •  
  •  
  •   
  •   

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


Chia sẻ bài viết này:
  •  
  •  
  •  
  •  
  •  
  •  
  •   
  •