Hướng dẫn cách viết code với đối tượng Worksheet trong VBA Excel

Phân Biệt Name và Code Name Của Đối Tượng Sheet trong VBA

Trong lập trình VBA (Visual Basic for Applications), việc làm việc với các đối tượng Sheet là điều không thể tránh khỏi. Trong cửa sổ Project của VBA, bạn sẽ thấy một đối tượng Sheet chứa hai phần quan trọng: Code Name và Name. Trước khi bắt đầu làm việc với chúng, hãy hiểu rõ sự khác biệt giữa chúng và cách chúng ảnh hưởng đến lập trình của bạn.

1. Code Name

Code Name là phần bên trái và không nằm trong dấu ngoặc. Đây là tên gọi được sử dụng trong mã lập trình VBA. Một điểm quan trọng là Code Name chỉ thay đổi khi bạn đổi tên mục (Name) tương ứng trong cửa sổ Properties của VBA.

Ví dụ: Nếu bạn đổi tên mục Name của Sheet trong VBA thành “Data_Sheet,” thì Code Name của nó sẽ trở thành “Data_Sheet.”

2. Name

Name là phần trong dấu ngoặc đơn và chính là tên của Sheet được hiển thị trong thanh SheetTab trong Excel. Khi bạn đổi tên Sheet trong SheetTab, phần Name này sẽ thay đổi theo.

3. Thứ Tự Của Sheet

Thứ tự của Sheet trong thư mục Microsoft Excel Objects của VBA được sắp xếp theo thứ tự của Code Name, không phải theo Name hay vị trí của Sheet trên thanh SheetTab. Điều này quan trọng khi bạn muốn sử dụng các đối tượng Sheet trong mã lập trình VBA.

Cách Viết Đối Tượng Worksheet

Đối tượng Worksheets hoặc Sheets chứa danh sách các Sheet trong Workbook. Chú ý rằng trong đối tượng này, chữ “Sheets” có kèm theo chữ “S.” Điều này ảnh hưởng đến cách bạn viết mã lập trình VBA.

Khi sử dụng đối tượng này, bạn phải nhập theo tên (Name) chứ không phải Code Name.

Ví dụ:

  • Sheets("01").Select là cách viết đúng.
  • Sheets("ABC_01").Select là cách viết sai và sẽ gây lỗi.

Có thể sử dụng số thứ tự của Sheet để tham chiếu đến nó. Thứ tự này không phụ thuộc vào tên Sheet, Code Name của Sheet hay thời gian khởi tạo Sheet. Điều này hữu ích khi bạn biết rõ vị trí của Sheet trên thanh SheetTab mà không cần quan tâm đến tên Sheet.

Đối Tượng Sheet

Khi viết đối tượng Sheet (không có chữ “S”), bạn chỉ cần gọi tên Code Name của Sheet để sử dụng được nó.

Ngoài ra, bạn có thể sử dụng đối tượng ActiveSheet để tham chiếu đến Sheet đang hoạt động, tức là đang được chọn hoặc làm việc trên đó. Chú ý là khi sử dụng các cách gọi này, bạn phải viết đúng theo cách viết của đối tượng đó, nếu viết sai, VBA sẽ báo lỗi không xác định được đối tượng.

Các Phương Thức của Đối Tượng Worksheet

Vì VBA là ngôn ngữ lập trình theo hướng đối tượng, trong đối tượng Worksheet chúng ta có các phương thức sau:

a. Activate

Phương thức này được sử dụng để kích hoạt một Sheet cụ thể.

Ví dụ:

  • Sheets("ABC").Activate kích hoạt Sheet có tên là “ABC.”
  • Sheet1.Activate kích hoạt Sheet có Code Name là “Sheet1.”

b. Calculate

Phương thức này thực hiện tính toán tất cả các công thức có trong Sheet.

Ví dụ:

  • Sheets("ABC").Calculate thực hiện tính toán các công thức trong Sheet có tên là “ABC.”
  • Sheet1.Calculate thực hiện tính toán các công thức trong Sheet có Code Name là “Sheet1.”

c. Copy

Phương thức Copy cho phép bạn sao chép một Sheet. Bạn có thể sao chép nó trong cùng một Workbook hoặc tạo một bản sao trong Workbook khác. Bạn cũng có thể xác định vị trí cho Sheet mới được sao chép.

Ví dụ:

  • Worksheets("Sheet2").Copy Before:=Worksheets(1) sao chép Sheet có tên là “Sheet2” và đặt nó trước Sheet đầu tiên trong danh sách các Sheet.

d. Delete

Phương thức Delete cho phép bạn xóa một Sheet. Khi xóa một Sheet, Excel sẽ yêu cầu xác nhận việc xóa này. Để xóa mà không cần xác nhận, bạn có thể sử dụng câu lệnh không hiển thị thông báo của Excel.

Ví dụ:

vba
Sub XoaSheet()
Application.DisplayAlerts = False
Sheet2.Delete
Application.DisplayAlerts = True
End Sub

e. Move

Phương thức Move cho phép bạn di chuyển một Sheet đến một vị trí cụ thể trong Workbook.

f. Select

Phương thức Select giúp bạn lựa chọn một hoặc nhiều Sheet để làm việc trên đó. Sự khác biệt cơ bản giữa Select và Activate là bạn có thể lựa chọn nhiều Sheet cùng lúc, nhưng chỉ có một Sheet được kích hoạt.

Việc phân biệt giữa Code Name và Name của đối tượng Sheet trong VBA là quan trọng để làm việc hiệu quả với mã lập trình VBA và tận dụng tối đa tính năng của Excel. Hãy chắc chắn rằng bạn hiểu rõ sự khác biệt này khi phát triển ứng dụng VBA của mình.

FAQs 

Làm thế nào để đổi tên một Sheet trong VBA?

Trong cửa sổ Project của VBA, bạn có thể đổi tên một Sheet bằng cách điều chỉnh thuộc tính Name trong cửa sổ Properties.

Tại sao tôi cần phải phân biệt giữa Code Name và Name của một Sheet?

Việc phân biệt này quan trọng khi bạn viết mã lập trình VBA để làm việc với các Sheet trong Excel. Code Name được sử dụng trong mã lập trình, trong khi Name được hiển thị cho người dùng.

Làm thế nào để xóa một Sheet mà không cần xác nhận trong VBA?

Bạn có thể sử dụng câu lệnh Application.DisplayAlerts = False trước khi xóa Sheet để tắt thông báo xác nhận và sau đó đặt lại Application.DisplayAlerts = True để bật lại thông báo.

Tôi có thể di chuyển một Sheet đến vị trí khác trong Workbook bằng VBA không?

Có, bạn có thể sử dụng phương thức Move để di chuyển một Sheet đến vị trí khác trong Workbook.

Tại sao phải sử dụng đối tượng ActiveSheet trong VBA?

Đối tượng ActiveSheet giúp bạn tham chiếu đến Sheet đang hoạt động, tức là đang được chọn hoặc làm việc trên đó. Điều này hữu ích khi bạn cần làm việc với Sheet hiện tại.

Như vậy, hi vọng rằng bạn đã hiểu rõ về sự khác biệt giữa Code Name và Name của đối tượng Sheet trong VBA và cách sử dụng chúng một cách hiệu quả trong lập trình của bạn.

Leave a Comment