VBA ThisWorkbook | Làm thế nào để sử dụng Thuộc tính ThisWorkbook trong Excel VBA?

Excel VBA ThisWorkbook

VBA ThisWorkbook có nghĩa là sổ làm việc mà chúng ta đang viết mã excel. Ví dụ: nếu bạn đang làm việc trong sổ làm việc có tên là “Bán hàng 2019.xlsx”, chúng tôi thường đề cập đến sổ làm việc như thế này.

Workbooks (“Bán hàng 2019.xlsx”). Kích hoạt

Mã sẽ kích hoạt sổ làm việc có tên “Bán hàng 2019.xlsx”.

Thay vì viết như thế này, chúng ta có thể chỉ cần viết mã VBA bên dưới.

ThisWorkbook.Activate '

Ở đây ThisWorkbook đề cập đến sổ làm việc mà chúng ta đang viết mã. Bằng cách tham chiếu từ này, chúng ta có thể thực hiện tất cả các tác vụ trong sổ làm việc hiện tại và tránh mã dài dòng với tên sổ làm việc được đặt tên đầy đủ.

Tôi chắc chắn rằng bạn cũng đã từng thấy từ “Active Workbook” khi bạn đề cập đến các mã khác. Đây cũng là một trong những từ thường được sử dụng trong mã hóa. Chúng ta sẽ xem sự khác biệt giữa hai từ này về cơ bản là gì.

Làm việc với ThisWorkbook trong Excel VBA

Từ tham chiếu “ThisWorkbook” đáng tin cậy hơn từ định tính đối tượng Workbooks. Một trong những xu hướng của con người là gõ sai tên sổ làm việc dẫn đến việc đưa ra thông báo lỗi.

Một lý do quan trọng hơn tại sao VBA ThisWorkbook đáng tin cậy hơn vì trong trường hợp nếu chúng ta thay đổi tên sổ làm việc, chúng ta cần thay đổi mã vì chúng ta đã sử dụng từ “ThisWorkbook”.

Vì vậy, ThisWorkbook an toàn hơn khi sử dụng để tham chiếu đến sổ làm việc nơi chúng ta đang viết mã.

Bạn có thể tải Mẫu VBA ThisWorkbook Excel tại đây - Mẫu VBA ThisWorkbook Excel

Ví dụ 1

Chúng ta sẽ thấy một số ví dụ mà chúng ta có thể sử dụng từ ThisWorkbook trong excel VBA. Đoạn mã sau sẽ in tên sổ làm việc.

Mã:

 Sub TWB_Example1 () Dim WBName As String WBName = ThisWorkbook.Name MsgBox WBName End Sub 

Khi bạn chạy mã theo cách thủ công hoặc sử dụng phím F5 sau đó, mã trên sẽ hiển thị tên sổ làm việc trong hộp thông báo trong VBA.

Ví dụ số 2

Thay vì sử dụng từ “This Workbook”, chúng ta có thể sử dụng các biến để đặt tham chiếu sổ làm việc và thậm chí giảm đáng kể độ dài của mã trong VBA. Ví dụ, hãy xem đoạn mã dưới đây trước.

Mã:

 Sub TWB_Example2 () ThisWorkbook. Kích hoạt ThisWorkbook.Worksheets ("Sheet1"). Kích hoạt ThisWorkbook.Save ThisWorkbook. Close ThisWorkbook.SaveAs End Sub 

Đoạn mã trên đã sử dụng “ThisWorkbook” trong mỗi dòng của mã. Thật khó để gõ từ mỗi và mỗi lần. Vì vậy, chúng ta có thể giảm thiểu điều này bằng cách sử dụng các biến.

Bây giờ, hãy xem đoạn mã dưới đây với biến.

Mã:

 Sub TWB_Example2 () Dim Wb As Workbook Set Wb = ThisWorkbook Wb. Kích hoạt Wb.Worksheets ("Sheet1"). Kích hoạt Wb.Save Wb.Close Wb.SaveAs End Sub 

Trông thật đẹp phải không ??

Để tôi giải thích mã cho các bạn.

Đầu tiên, tôi đã khai báo biến là đối tượng Workbook.

Làm mờ Wb dưới dạng sổ làm việc

Vì đây là một biến đối tượng, chúng tôi cần đặt tham chiếu đến sổ làm việc cụ thể. Vì vậy, tôi đã sử dụng tài liệu tham khảo "ThisWorkbook".

Đặt Wb = ThisWorkbook

Bây giờ biến “Wb” được tham chiếu đến sổ làm việc nơi chúng ta đang viết mã tại thời điểm này. Từ đây về sau trong quy trình, chúng ta không cần sử dụng từ “ThisWorkbook” thay vào đó chúng ta có thể sử dụng biến “Wb”

Active Workbook so với ThisWorkbook trong Excel VBA

Như tôi đã nói ở phần đầu của bài viết, nhiều lập trình viên sử dụng các từ Active Workbook & ThisWorkbook rất thường xuyên trong mã hóa VBA của họ. Là một người đọc hay mới tìm hiểu, không dễ để hiểu được hai điều này. Vì vậy, hãy để tôi giải thích cho bạn một số điểm khác biệt.

Sự khác biệt # 1: Ý nghĩa

  • Active Workbook: Active Workbook không nhất thiết phải là workbook mà chúng ta đang viết mã vào lúc này. Nếu bạn có nhiều sổ làm việc đã mở và bất kỳ sổ làm việc nào hiển thị trên màn hình của bạn được coi là Sổ làm việc Hoạt động .
  • ThisWorkbook: ThisWorkbook luôn là sổ làm việc mà chúng tôi đang viết mã vào lúc này.

Sự khác biệt 2: Cơ hội Lỗi

  • Active Workbook: Sử dụng Active trong mã hóa có thể dẫn đến nhiều lỗi và nhầm lẫn vì chúng ta không bao giờ biết workbook nào đang hoạt động trừ khi chúng tôi đề cập cụ thể đến workbook cần kích hoạt trước khi sử dụng từ Active Workbook.
  • ThisWorkbook: ThisWorkbook không thể sai sót vì không quan trọng sổ làm việc nào đang hoạt động, nó luôn lấy tham chiếu của sổ làm việc nơi chúng ta đang viết mã.

$config[zx-auto] not found$config[zx-overlay] not found