Đối với một phiên bản Microsoft Excel 97 của bài viết này, hãy xem 157346.Đối với một phiên bản Microsoft Excel 98 của bài viết này, hãy xem 182482.
Triệu chứng
Trong Microsoft Office Excel, Microsoft Visual Basic for Application (VBA) mã macro có chứa "Behind" của một trang tính hoặc sổ làm việc có thể không hoạt động chính xác.
Nguyên nhân
Thao tác này sẽ xảy ra nếu cả hai điều kiện sau là đúng:
-
Mã trong câu hỏi được chứa trong một dòng công việc tự động chạy, chẳng hạn như Auto_Open hoặc Auto_Close subroutine.
-
Mã này không chứa trong mô-đun Visual Basic nhưng "Behind" trang tính hoặc sổ làm việc chính nó.
Cách giải quyết
Để tự động chạy Subroutines để hoạt động đúng cách trong Microsoft Excel, họ phải được chứa trong một mô-đun Visual Basic. Bạn phải chèn một mô-đun Visual Basic vào sổ làm việc và sau đó đặt mã trong mô-đun mới. Để chèn mô-đun Visual Basic:
-
Trong Project Explorer trong trình soạn thảo Visual Basic, hãy kích hoạt sổ làm việc có chứa mã trong câu hỏi.
-
Trên menu Chèn, bấm vào Mô-đun.
Sau khi đã chèn mô-đun mới, hãy cắt mã từ vị trí ban đầu và dán nó vào mô-đun Visual Basic. Sau đó, lưu sổ làm việc.
Thông tin Bổ sung
Trong Excel, mã VBA có thể được lưu trữ ở ba vị trí khác nhau: trong mô-đun Visual Basic, trong mô-đun lớp Visual Basic, và "Behind" trang tính và sổ làm việc. Để sửa mã "Behind" trang tính hoặc sổ làm việc:
-
Kích hoạt trình soạn thảo Visual Basic (nhấn ALT + F11).
-
Trong cửa sổ Project Explorer , bạn sẽ thấy các mục nhập tương tự như sau:
VBAProject (Book1) Microsoft Excel Objects Sheet1 (Sheet1) Sheet2 (Sheet2) Sheet3 (Sheet3) ThisWorkbook Modules Module1
Nếu bạn bấm đúp vào một trong các tên trang tính hoặc Thissổlàm việc, bạn có thể nhập mã trong cửa sổ mã. Mã này không chứa trong mô-đun Visual Basic được coi là "phía sau" của trang tính hoặcThissổ làm việc. Nếu một Auto_Open, Auto_Closehoặc không tự động chạy subroutine khác sẽ được lưu trữ "Behind" a trang tính hoặc thissổlàm việc, nó có thể không hoạt động đúng khi bạn mở hoặc đóng sổ làm việc của bạn hoặc khi bạn thực hiện một hành động, nên làm cho subroutine chạy.