Khắc phục sự cố macro Excel đơn giản, nếu thông báo lỗi xuất hiện. Sử dụng nút Gỡ lỗi để tìm và khắc phục sự cố nhỏ trong mã. Cách khắc phục lỗi phím F8 ngừng hoạt động khi chuyển qua macro. Phải làm gì nếu danh sách Project Explorer bị thiếu
Nút gỡ lỗi thông báo lỗi
Đôi khi, khi bạn cố gắng chạy macro, một thông báo lỗi sẽ xuất hiện, chẳng hạn như "Lỗi thời gian chạy '9'. Subscript Out of Range" lỗi hiển thị bên dưới
Trên thông báo lỗi này, có sẵn 3 nút -- Kết thúc, Gỡ lỗi và Trợ giúp
- Để dừng macro, hãy bấm vào nút Kết thúc
- Để nhận thông tin về lỗi, hãy nhấp vào Trợ giúp. Trong trường hợp này, bạn sẽ kết thúc trang trên trang web của Microsoft, với danh sách các nguyên nhân và giải pháp có thể xảy ra cho lỗi Subscript Out of Range
- Để đi đến VBE và cố gắng giải quyết vấn đề, hãy nhấp vào nút Gỡ lỗi
Gỡ lỗi Macro
Trong ví dụ này, một macro đã được ghi lại, để chuyển đến trang tính có tên "Chính", sau đó chọn ô C3 trên trang tính đó. Khi chạy macro, thông báo lỗi trên xuất hiện
Đây là mã VBA, cho macro GoToMainSheet
Sub GoToMainSheet[] ' GoToMainSheet Macro Sheets["Main"].Select Range["C3"].Select End Sub
Chúng tôi sẽ sử dụng nút Gỡ lỗi để khắc phục sự cố
- Trong thông báo lỗi, nhấp vào nút Gỡ lỗi
- VBE mở ra, hiển thị macro Trang tính GoToMain và một dòng mã được đánh dấu bằng màu vàng, với mũi tên màu vàng ở lề bên trái
- Excel hiển thị thông báo lỗi vì nó không thể hoàn thành dòng mã được đánh dấu
- Nhìn vào cửa sổ Project Explorer và kiểm tra danh sách các trang tính cho sổ làm việc đang hoạt động
- Có 3 trang tính, được đặt tên là "Giới thiệu", "Trang tính 2" và "Trang tính 3" -- không có trang tính nào có tên là "Chính"
Chúng tôi sẽ dừng trình gỡ lỗi và sửa mã
- Trên Thanh công cụ VBE, nhấp vào nút Đặt lại
Mã ngừng chạy và phần đánh dấu màu vàng biến mất
sửa mã
Tiếp theo, bạn sẽ chỉnh sửa mã, để thay đổi tên trang tính
Giải pháp 1. Không được khuyến khích
- Trong dòng mã, bạn có thể thay thế "Main" bằng "Intro", là tên hiện tại của trang tính đầu tiên trong sổ làm việc
- Tuy nhiên, với giải pháp đó, mã có thể hiển thị lại lỗi, nếu có ai đó thay đổi tên trang tính trong tương lai
Sheets["Intro"].Select
- Đây không phải là giải pháp tốt nhất
Giải pháp 2. Khuyến khích
- Thay vì sử dụng tên từ tab Trang tính, chúng tôi sẽ sử dụng Tên mã của trang tính. Nó ít có khả năng bị thay đổi bởi bất kỳ ai khác ngoài lập trình viên
- Trong Project Explorer, bạn có thể thấy Tên mã của trang tính, theo sau là tên xuất hiện trên tab trang tính
- Tên mã của trang tính đầu tiên là "Sheet1", vì vậy hãy thay đổi mã để sử dụng tên đó
Sheet1.Select
- Giải pháp này tốt hơn vì mã sẽ tiếp tục chạy, ngay cả khi tên trên tab trang tính bị thay đổi
Lưu các thay đổi và kiểm tra Macro
- Trên Thanh công cụ VBE, nhấp vào nút Lưu, sau đó đóng cửa sổ VBE và quay lại Excel
- Chạy lại macro và nó sẽ hoạt động bình thường mà không hiển thị lỗi
Phím F8 ngừng hoạt động
Khi gỡ lỗi mã VBA của Excel, bạn có thể sử dụng phím F8 hoặc lệnh Step Into để duyệt qua mã, từng dòng một
Tuy nhiên, trong Excel 2010 hoặc các phiên bản mới hơn, bạn có thể gặp phải sự cố khi phím F8 [hoặc Bước vào] ngừng hoạt động khi thực hiện một phần quy trình
Đôi khi, điều này xảy ra sau khi mã mở một tệp khác. Thay vì dừng ở dòng mã tiếp theo, nó sẽ chạy đến cuối quy trình hoặc đến điểm ngắt tiếp theo
Thay đổi sổ đăng ký
Để khắc phục sự cố này, bạn có thể thực hiện thay đổi sau trong Sổ đăng ký. Như mọi khi, hãy sao lưu Sổ đăng ký, trước khi thực hiện bất kỳ thay đổi nào và tự chịu rủi ro khi thử điều này
Cảm ơn Ross Connell đã chia sẻ giải pháp này mà anh ấy đã học được từ Bộ phận hỗ trợ của Microsoft
Thay đổi sổ đăng ký ảnh hưởng đến Gỡ lỗi RPC và bạn có thể đọc thêm về nó trên trang web của Microsoft
1] Tạo bản sao lưu
Trước khi bạn thực hiện bất kỳ thay đổi nào đối với sổ đăng ký, hãy nhớ thực hiện sao lưu trước
- Đóng Excel
- Tạo một bản sao lưu của tệp Registry, sau đó mở Registry
2] Tìm khóa đăng ký
Tiếp theo, hãy mở Sổ đăng ký và chuyển đến khóa VBA hiện hành, dựa trên phiên bản Office và Window của bạn
- Đối với Office 32 bit trên Cửa sổ 64 bit, hãy chuyển đến khoá đăng ký
- HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VBA
- Đối với Office 32 bit trên Cửa sổ 32 bit, hãy chuyển đến khoá đăng ký
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VBA
- Đối với Office 64 bit trên Windows 64 bit, hãy chuyển đến khoá đăng ký
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VBA
Phải làm gì tiếp theo
- Nếu bạn tìm thấy khóa VBA thích hợp, nơi bạn sẽ tạo DWORD
- Nếu bạn KHÔNG tìm thấy khóa, hãy thử các giải pháp trong phần tiếp theo, để tìm kiếm sổ đăng ký hoặc tạo khóa theo cách thủ công
Không có khóa VBA trong Registry
Nếu bạn không thể tìm thấy khóa VBA ở vị trí dự kiến, hãy thử một trong các giải pháp sau
1. Tìm kiếm Sổ đăng ký
Hãy thử giải pháp này trước - nó dễ dàng hơn. [Cảm ơn vì mẹo này]
- Trong Registry, nhấp chuột phải vào thư mục HKEY_LOCAL_MACHINE
- Trong menu bật lên, nhấp vào Tìm
- Trong hộp Tìm kiếm, hãy nhập. Microsoft\VBA
- Nhấp vào nút Tìm tiếp theo
Nếu cách đó không hiệu quả, hãy thử giải pháp tiếp theo bên dưới
2. Tạo khóa thủ công
Nếu bạn không thể tìm thấy khóa Microsoft\VBA ở bất kỳ đâu trong Sổ đăng ký, hãy làm theo các bước bên dưới để tạo khóa theo cách thủ công. [Cảm ơn Ross Connell đã chia sẻ mẹo bổ sung này]
- Trước tiên, hãy tìm thư mục chứa khóa VBA, dựa trên phiên bản Office và Windows của bạn. [Thấy ]
- Trong danh sách bên trái, hãy chọn thư mục đó để xem nội dung của nó
- Tiếp theo, nhấp chuột phải vào khung bên phải của cửa sổ, nơi liệt kê nội dung
- Sau đó, trong menu bật lên, bấm vào Mới, sau đó bấm vào Khóa
- Tiếp theo, đổi tên khóa mới thành VBA
- Sau đó, trong danh sách bên trái, chọn khóa VBA mới, để xem nội dung của nó
3] Tạo DWORD trong VBA Key
Cuối cùng làm theo các bước sau, để tạo DWORD [hoặc QWORD] trong key VBA
- Đầu tiên, nhấp chuột phải vào khung bên phải của cửa sổ, nơi liệt kê nội dung
- Sau đó, trong menu bật lên, bấm vào Mới
- Trong menu bật lên, hãy bấm vào DWORD hoặc QWORD, tùy thuộc vào phiên bản Office của bạn
- Tiếp theo, đặt tên cho DWORD [hoặc QWORD] là DisableOrpcDebugging7
- Bấm chuột phải vào DWORD [hoặc QWORD] và bấm Sửa đổi
- Thay đổi Dữ liệu giá trị thành 1 và để nguyên các cài đặt khác
- Sau đó, nhấn nút OK để hoàn tất việc thay đổi
DWORD hoặc QWORD đã hoàn thành sẽ xuất hiện trong Sổ đăng ký
Ví dụ: ảnh chụp màn hình này hiển thị DWORD
Ảnh chụp màn hình này hiển thị QWORD, trong thư mục VBA được tạo thủ công
4] Đóng sổ đăng ký
Sau khi hoàn thành các bước tạo DWORD hoặc QWORD mới trong key Microsoft\VBA, các bạn làm theo các bước sau
- Đóng sổ đăng ký
- Mở lại Excel
- Kiểm tra phím F8 để xem bây giờ nó có hoạt động chính xác không, bước qua mã và dừng ở mỗi dòng
Thiếu thư mục Project Explorer
Khi bạn làm việc trong Visual Basic Editor, Project Explorer thường hiển thị, hiển thị danh sách tất cả các dự án VBA đang mở
Nhấp vào nút + hoặc - ở bên trái tên dự án để mở và đóng danh sách các đối tượng cho dự án đó
GHI CHÚ. Nếu một dự án được bảo vệ và chưa được mở khóa trong phiên hiện tại, bạn sẽ được nhắc nhập mật khẩu khi nhấp vào nút +
Hiển thị nội dung thư mục
Sau đó, nhấp vào nút + hoặc - ở bên trái tên thư mục để mở và đóng danh sách các đối tượng cho thư mục đó
Các thư mục bị thiếu
Đôi khi, các thư mục trình khám phá dự án có thể biến mất và một danh sách theo thứ tự bảng chữ cái các đối tượng của sổ làm việc xuất hiện bên dưới tên dự án
Để hiển thị lại các đối tượng được nhóm vào các thư mục, hãy làm theo các bước sau
- Nhấp vào tên dự án, cho một dự án đã được mở khóa
- Trên thanh công cụ ở đầu cửa sổ Project Explorer, nhấp vào nút Toggle Folders
Các thư mục sẽ xuất hiện lại cho tất cả các dự án, với các nhóm đối tượng vào các thư mục
Nhận tệp mẫu
Nút gỡ lỗi. Để kiểm tra các bước gỡ lỗi VBA, hãy lấy tệp mẫu Nút gỡ lỗi thông báo lỗi. Tệp Excel đã nén có định dạng xlsm và chứa macro có tên GoToMainSheet. Để kiểm tra macro, hãy nhớ bật macro khi bạn mở sổ làm việc