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 |