Tên macro được thay đổi trong Excel


2

Tôi đang tạo macro VBA trong bảng tính Excel của mình. Tôi nhận thấy rằng thỉnh thoảng (sau khi lưu bảng tính và mở lại nó, thường) một hoặc nhiều tên macro đang được thay đổi từ sheet1.macroname đến spreadsheetname.xls!macroname. Đây không phải là một tên macro hợp lệ vì vậy tôi không thể chạy nó nữa.

Tôi có thể khắc phục sự cố bằng cách xóa tất cả các macro, lưu kết quả, dán lại macro và lưu lại, nhưng người ta không thể mong đợi người dùng bình thường làm điều đó.

Có ai biết điều gì gây ra điều này, và tôi có thể làm gì để ngăn chặn nó không?

Chỉnh sửa chi tiết hơn

Khi tôi khởi động bảng tính và hiển thị hội thoại Macro, một hoặc đôi khi nhiều hơn các macro dường như đã thay đổi tên của nó từ sheet1.macroname đến spreadsheet.xls!macroname. Cố gắng chạy macro này bằng cách nhấp đúp vào nó sẽ tạo ra thông báo lỗi 'Tên macro không hợp lệ'. Đóng hộp thông báo lỗi và bấm đúp vào lần thứ hai sẽ tạo ra thông báo lỗi 'Tham chiếu không hợp lệ'. Những nỗ lực sau đó cũng làm như vậy.

Gọi một macro khác sheet1.othermacro bằng cách nhấp đúp vào nó hoạt động và loại bỏ đối thoại vĩ mô. Khi hiển thị lại, macro đầu tiên đã đổi tên thành sheet1.macroname. Mà không khắc phục vấn đề, tôi cho rằng.


Có vẻ như macro được đặt trong không gian mã của Trang tính, thay vào đó bạn đã thử đặt nó trong Mô-đun chưa? Tuy nhiên, sau đó tôi thực sự mong đợi sheet1.macroname để trở thành spreadsheet.xls!sheet1.macroname...
DMA57361

@ DMA57361, macro được xác định trong đối tượng excel sheet1. Nó phải được định nghĩa ở đó?
Brian Hooper

2
Nói chung, các Mô-đun nên là lựa chọn đầu tiên để đặt macro (xem điều này Câu hỏi về Stack Overflow cho một số cuộc thảo luận), chỉ với các thủ tục sự kiện thường trong không gian mã của trang tính.
DMA57361

@ DMA57361, cảm ơn bạn. Tôi sẽ đưa ra một số vấn đề.
Brian Hooper

Tôi nghĩ rằng @ DMA57361 có giải pháp của bạn.
Nick Spreitzer

Câu trả lời:


2

Tôi tìm thấy giải pháp một cách tình cờ.

Sự cố chỉ xảy ra nếu tên Mô-đun giống hệt với tên Macro. Vì vậy, Module phải được đặt tên khác nhau. Đó là nó!


1

Tôi nghi ngờ rằng tên của macro không thực sự thay đổi: Nếu bạn mở hộp thoại Macro từ excel khi có nhiều hơn sổ làm việc được mở, các macro được lưu trữ trong sổ làm việc hiện đang hoạt động được hiển thị dưới dạng MarcoName. Tuy nhiên, các macro được lưu trữ trong một sổ làm việc không phải hoạt động được hiển thị như WorkbookName.xls!MacroName. Điều đó nói rằng, bạn có chắc chắn rằng tên macro đang thay đổi?

Khi bạn nói rằng bạn không còn có thể chạy macro, bạn có thể cụ thể hơn về những gì chính xác xảy ra không? Không có gì? Thông báo lỗi?

Ngoài ra, bạn đang ghi lại các macro này hay bạn đang tự viết chúng?


Tôi đang tự viết macro. Việc thay đổi tên tôi đang quan sát trong đoạn hội thoại Macro. Thông báo lỗi là "tên macro không hợp lệ"; Tôi sẽ xem nếu tôi có thể đào thêm bất kỳ bằng chứng nào vào ngày mai.
Brian Hooper

Rất lạ. Và bạn nhận được thông báo lỗi đó khi bạn cố chạy macro từ Hộp thoại Macros? Hoặc khi bạn gọi nó từ mã khác? Tôi rất bị thu hút bởi điều này ....
Nick Spreitzer

cảm ơn sự giúp đỡ của bạn. Tôi đã chỉnh sửa câu hỏi để cung cấp thêm chi tiết.
Brian Hooper
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.