VBA ActiveWorkbook so với ThisWorkbook

Hướng dẫn này sẽ thảo luận về sự khác biệt giữa VBA ActiveWorkbook và ThisWorkbook.

ActiveWorkbook so với ThisWorkbook

Điều quan trọng là phải biết sự khác biệt giữa ActiveWorkbook và ThisWorkbook trong VBA:

ActiveWorkbook là sổ làm việc hiện đang hoạt động (tương tự như cách ActiveSheet là trang hiện đang hoạt động). ThisWorkbook là sổ làm việc nơi mã VBA được lưu trữ. ThisWorkbook sẽ không bao giờ thay đổi.

ThisWorkbook

Hãy coi ThisWorkbook như một biến đối tượng cho phép bạn tham chiếu sổ làm việc có chứa mã hiện đang chạy.

Mã này sẽ hiển thị một Hộp thư với tên ThisWorkbook:

123 Sub Show_ThisWorkbook ()MsgBox ThisWorkbook.NameKết thúc Sub

ActiveWorkbook

ActiveWorkbook là một biến đối tượng cho phép bạn tham chiếu đến sổ làm việc hiện đang hoạt động.

Mã này sẽ hiển thị một MessageBox với tên ActiveWorkbook:

123 Sub Show_ActiveWorkbook ()MsgBox ActiveWorkbook.NameKết thúc Sub

VBA giả sử ActiveWorkbook

Khi cố gắng làm việc với các đối tượng (ví dụ: Trang tính) trong ActiveWorkbook, bạn không cần phải chỉ rõ đối tượng ActiveWorkbook. VBA sẽ cho rằng bạn đang đề cập đến ActiveWorkbook.

Vì vậy, điều này:

1 ActiveWorkbook.Sheets ("Sheet1"). Phạm vi ("$ A $ 5"). Giá trị = 1

Giống như thế này:

1 Trang tính ("Trang 1"). Phạm vi ("$ A $ 5"). Giá trị = 1

Sổ làm việc mới hoặc đã mở đang hoạt động

Bất cứ khi nào bạn tạo một sổ làm việc mới hoặc mở một sổ làm việc, sổ làm việc sẽ trở thành “Hoạt động”. Bạn có thể tự mình thấy mã này sẽ thêm một sổ làm việc và truy xuất tên của sổ làm việc mới:

1234 Sub Show_ActiveWorkbook_Add ()Workbooks.AddMsgBox ActiveWorkbook.NameKết thúc Sub

Sau khi thêm hoặc mở sổ làm việc, bạn có thể gán nó cho một biến bằng cách sử dụng đối tượng ActiveWorkbook. Chúng tôi sẽ chỉ cho bạn cách thực hiện trong các ví dụ dưới đây:

Ví dụ về ThisWorkbook và ActiveWorkbook

Chuyển đổi Sổ làm việc Hoạt động

Chuyển sổ làm việc đang hoạt động bằng tên Sổ làm việc:

1 Workbooks ("Book1"). Kích hoạt

Chuyển sổ làm việc đang hoạt động bằng cách sử dụng số thứ tự trang tính (1 là trang tính đầu tiên trong sổ làm việc)

1 Workbooks (1). Kích hoạt

Làm cho ThisWorkbook hoạt động

Đặt ThisWorkbook (nơi lưu trữ mã hiện đang chạy) thành ActiveWorkbook:

1 ThisWorkbook.Activate

Đặt ActiveWorkbook thành một biến

Gán ActiveWorkbook cho một biến đối tượng sổ làm việc:

12 Dim wb As WorkbookĐặt wb = ActiveWorkbook

Đóng và Lưu Sổ làm việc Hoạt động

Đóng và lưu ActiveWorkbook:

1 ActiveWorkbook.Close SaveChanges: = True

Đóng sổ làm việc đang hoạt động mà không lưu

Đóng ActiveWorkbook mà không lưu:

1 ActiveWorkbook.C Close SaveChanges: = False

ActiveWorkbook - Lưu dưới dạng

Thực hiện Lưu dưới dạng Sổ làm việc đang hoạt động.

123456789 Sub SaveAsActiveWorkbook ()Làm mờ kết quả như một biến thểresult = Application.GetSaveAsFilename (InitialFileName: = "", _FileFilter: = "Excel Macro-Enabled Workbook (* .xlsm), * .xlsm, Excel Workbook (* .xlsx), * .xlsx")Nếu kết quả = Sai thì trả vềKết quả là ActiveWorkbook.SaveAsKết thúc Sub

Bạn sẽ giúp sự phát triển của trang web, chia sẻ trang web với bạn bè

wave wave wave wave wave