Giúp em xử lý lỗi macro khi chạy VBA

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

quoc_lap

Thành viên mới
Tham gia
2/12/13
Bài viết
19
Được thích
1
Untitled.jpg
2.jpg

Em có tạo 4 macro: macro1, macro4, macro5, macro6. Nhưng khi em chạy vba thì chỉ chạy được 3 macro 1,4,5 còn 6 thì bị lỗi. Mọi người giúp em với. Em xin đa tạ. (Có cả ảnh và file luôn nhé)
 

File đính kèm

  • thử macro.xlsm
    27.2 KB · Đọc: 11
Lần chỉnh sửa cuối:
Em có tạo 4 macro: macro1, macro4, macro5, macro6. Nhưng khi em chạy vba thì chỉ chạy được 3 macro 1,4,5 còn 6 thì bị lỗi. Mọi người chỉ giáo giúp em. Em xin đa tạ. (Có cả ảnh và file luôn nhé)
Sửa mấy từ mầu đỏ đó đi là được hỗ trợ thôi.
 
Anh có thể giải thích thêm được không anh? Vì sao khi em viết module1. thì chỉ hiện macro 1,4,5 còn 6 thì không thế anh?
Vì Macro6 nằm ở Module2, trong Module1 không có Macro6 thế thôi. Bạn thử sửa Module1.Macro6 thành Module2.Macro6 xem thế nào.
 
Bạn cứ bỏ hết chữ Module và dấu chấm đi, còn giải thích thì mình chịu.
Trong vba, tất cả các hằng, biến, và sub/func đều có không gian định danh (namespace) của chúng. Tiền tố này dùng để vba phân biệt rõ là bạn muốn dùng cái ở đâu. Ví dụ code có 2 sub ToTe thì vba sẽ không chịu. Bạn phải phân chúng ra, 1 nằm ở module1 và 1 ở module2. Lúc ấy, để vba biết bạn muốn gọi thằng sub nào thì bạn phải gán tiền tố tênModule + dấu chấm
Không có tiền tố thì vba sẽ tìm theo luật mặc định.
Ở code trên, người ta gọi macro6 bằng cách thêm tiền tố module1. Vba bị ép buộc phải tìm macro6 bên trong module1. Và dĩ nhiên là nó không tìm ra. Nếu tiền tố module1 được xoá đi, vba sẽ tự do tìm macro6 (nơi nó tìm đầu tiên là module chứa code đang chạy)

Đại khái giống như thằng Tèo. Nếu ngõ chỉ có 1 Tèo thì tự do gọi. Nhưng nếu ngõ có trên 1 Tèo thì phải cho muốn gọi Tèo nhà nào. Vào nhà mà gọi Tèo thì người ta tạm hiểu là nhà hiện tại. Nếu nhà không có Tèo thì người ta hiểu là hàng xóm và có thể đòi phải cho biết nhà nào
 
Trong vba, tất cả các hằng, biến, và sub/func đều có không gian định danh (namespace) của chúng. Tiền tố này dùng để vba phân biệt rõ là bạn muốn dùng cái ở đâu. Ví dụ code có 2 sub ToTe thì vba sẽ không chịu. Bạn phải phân chúng ra, 1 nằm ở module1 và 1 ở module2. Lúc ấy, để vba biết bạn muốn gọi thằng sub nào thì bạn phải gán tiền tố tênModule + dấu chấm
Không có tiền tố thì vba sẽ tìm theo luật mặc định.
Ở code trên, người ta gọi macro6 bằng cách thêm tiền tố module1. Vba bị ép buộc phải tìm macro6 bên trong module1. Và dĩ nhiên là nó không tìm ra. Nếu tiền tố module1 được xoá đi, vba sẽ tự do tìm macro6 (nơi nó tìm đầu tiên là module chứa code đang chạy)

Đại khái giống như thằng Tèo. Nếu ngõ chỉ có 1 Tèo thì tự do gọi. Nhưng nếu ngõ có trên 1 Tèo thì phải cho muốn gọi Tèo nhà nào. Vào nhà mà gọi Tèo thì người ta tạm hiểu là nhà hiện tại. Nếu nhà không có Tèo thì người ta hiểu là hàng xóm và có thể đòi phải cho biết nhà nào
Em cũng hiểu như vậy, nhưng thấy bạn này có bài tương tự từ hồi tháng 7/2024 đến giờ mà không thấy cải thiện chút nào và vẫn đi hỏi lại nên cũng không có hứng thú để giải thích anh ạ.
 
Em cũng hiểu như vậy, nhưng thấy bạn này có bài tương tự từ hồi tháng 7/2024 đến giờ mà không thấy cải thiện chút nào và vẫn đi hỏi lại nên cũng không có hứng thú để giải thích anh ạ.
Tôi cũng quên mất chủ thởt này có tật hỏi thì nhiều nhưng học thì ít.
Thực ra thắc mắc của thớt thì bài #7 đã giải quyết rồi
 
Trong vba, tất cả các hằng, biến, và sub/func đều có không gian định danh (namespace) của chúng. Tiền tố này dùng để vba phân biệt rõ là bạn muốn dùng cái ở đâu. Ví dụ code có 2 sub ToTe thì vba sẽ không chịu. Bạn phải phân chúng ra, 1 nằm ở module1 và 1 ở module2. Lúc ấy, để vba biết bạn muốn gọi thằng sub nào thì bạn phải gán tiền tố tênModule + dấu chấm
Không có tiền tố thì vba sẽ tìm theo luật mặc định.
Ở code trên, người ta gọi macro6 bằng cách thêm tiền tố module1. Vba bị ép buộc phải tìm macro6 bên trong module1. Và dĩ nhiên là nó không tìm ra. Nếu tiền tố module1 được xoá đi, vba sẽ tự do tìm macro6 (nơi nó tìm đầu tiên là module chứa code đang chạy)

Đại khái giống như thằng Tèo. Nếu ngõ chỉ có 1 Tèo thì tự do gọi. Nhưng nếu ngõ có trên 1 Tèo thì phải cho muốn gọi Tèo nhà nào. Vào nhà mà gọi Tèo thì người ta tạm hiểu là nhà hiện tại. Nếu nhà không có Tèo thì người ta hiểu là hàng xóm và có thể đòi phải cho biết nhà nào
Cảm ơn bạn nhiều nhé.
Bài đã được tự động gộp:

Tôi cũng quên mất chủ thởt này có tật hỏi thì nhiều nhưng học thì ít.
Thực ra thắc mắc của thớt thì bài #7 đã giải quyết rồi
bài nào vậy bạn? gửi link cho mình xem được không? tại không tìm thấy bài tương tự nên mình mới đăng xin giúp á.
Bài đã được tự động gộp:

Em cũng hiểu như vậy, nhưng thấy bạn này có bài tương tự từ hồi tháng 7/2024 đến giờ mà không thấy cải thiện chút nào và vẫn đi hỏi lại nên cũng không có hứng thú để giải th
Chào anh, em không phải người trong ngành chuyên về excel, nên thi thoảng em làm theo 1 số hướng dẫn trên mạng để xử lý dữ liệu, và khi nó phát sinh lỗi thì em post lên đây để mọi người giải thích giúp. Lần đầu e post từ tháng 7 nhưng chưa thấy ai trả lời, em nghĩ có thể mọi người chưa hiểu câu hỏi của em, nên giờ em post lại để tìm câu trả lời đấy anh.
Nếu những bài post của em làm anh khó chịu và làm phiền anh thì anh có thể bỏ qua nhé. Cảm ơn anh đã giải đáp
 
Lần chỉnh sửa cuối:
...
bài nào vậy bạn? gửi link cho mình xem được không? tại không tìm thấy bài tương tự nên mình mới đăng xin giúp á.
...
Chẳng lẽ bạn không biết gì về thói quen dẫn số bài ở GPE?
Chịu khó đọc kỹ. Kẻo tôi lại nói "hỏi thì nhiều mà học/đọc thì rất ít"
 
Web KT

Bài viết mới nhất

Back
Top Bottom