Dear tranan76,
---------------
Hị hị... đừng bắt mình phải Alt+F11 mà!
Vấn đề của bạn mình đoán nguyên nhân là do bạn sử lý biến cố chưa tốt thôi.
Bạn xem lại đi, cái này mình đã nhắc bạn rồi mà, giả sử tại cell E30 mình lập công thức để tính toán thử: =355/113+100/81 vậy mà thủ tục Worksheet_Change của bạn lại sửa thành 4,37616082158855 = 4,376.
Điều này không thể chấp nhận được vì E30 ngoài vùng tính toán, nó không phải chịu tác động bởi VBA được.
Nếu bạn vẫn muốn giải quyết theo hướng này thì mình lưu ý bạn vấn đề thế này vậy:
1. Khi sử dụng biến cố Worksheet_Change, điều đầu tiên bạn quan tâm đến thủ tục này là sự kiện xảy ra tại Cell nào. Đương nhiên là Target rồi, nhưng không phải bất cứ Target nào bị "Change" là bạn cho thi hành lệnh bên dưới. Vì vậy bạn cần phải kiểm tra Target xem có thuộc phạm vi để cho phép tính toán Khối lượng hay không.
2. Khi Target tại ô tính tongkl tức là bạn đang sửa tham chiếu cho hàm của bạn và việc đúng hay sai tham chiếu là do ý đồ của bạn thôi. Trường hợp này bạn chỉ cần chắc chắn tham chiếu đúng đến vùng tính tổng là được.
Quan trọng là trường hợp thay đổi giá trị của một công việc nào đó trong hạng mục!? Khi đó hàm tongkl sẽ tự động tính lại kết quả dựa vào tham chiếu hiện thời. Nếu tham chiếu trong hàm tongkl được bảo toàn thì mọi việc đều suôn sẻ, nhưng do trong thủ tục Worksheet_Change bạn đã thiết lập lại Formula mà trong đó tham chiếu không còn chính xác nữa. Khắc phục nhược điểm này, bạn chỉ cần... xoá quách Sub Worksheet_Change đi là ổn. Nói cụ thể hơn thì thủ tục này gần như
vô nghĩa bởi vì khi bạn sử dụng công thức trên Excel thì công thức đó
luôn luôn thực hiện khi có sự thay đổi, trừ phi bạn tắt tính năng AutoCalculate đi.
Như vậy là cũng không cần phải giải thích code nữa chứ ạ!
