sony18102012
Thành viên mới
- Tham gia
- 6/9/17
- Bài viết
- 22
- Được thích
- 4
- Giới tính
- Nam
Ngoài ra có cùng virus hay không nữa, /(hà, Khà, kha, kha. . . . .Hai máy tính đó có cùng cấu hình, cùng hệ điều hành, cùng phiên bản Office không bạn?
Nếu code đơn giản thì đâu cần giống nhau.Hai máy tính đó có cùng cấu hình, cùng hệ điều hành, cùng phiên bản Office không bạn?
Mình xài máy cty nên mọi thứ đều đồng bộ.Hai máy tính đó có cùng cấu hình, cùng hệ điều hành, cùng phiên bản Office không bạn?
các macro khác đều chạy bình thường giữa các PC. Chỉ riêng mỗi cái này là bị chậm .Nếu code đơn giản thì đâu cần giống nhau.
Code phải phức tạp lắm thì mới nảy sinh khác biệt như vậy.
Cần hỏi lại thớt các macro khác có bị tương tự?
Đoạn code tắt .ScreenUpdating và .EnableEvents bạn thử thêm vào .Calculation = xlCalculationManual nhé. Đến cuối sub nhớ mở lại: .Calculation = xlCalculationAutomaticcó thể chạy nhanh hơn được không.
Tôi thấy thế này:Xin chào các anh, chị
Hiện tại mình bị 1 vấn đề là dòng code Module LUUTT chạy giữa 2 máy có khoảng thời gian khác nhau, 1 PC thì rất chậm còn 1 PC thì ngược lại. Mong các anh chị xem khắc phục và điều chỉnh thêm có thể chạy nhanh hơn được không.
Cám ơn
cám ơn đã hướng dẫn.Đoạn code tắt .ScreenUpdating và .EnableEvents bạn thử thêm vào .Calculation = xlCalculationManual nhé. Đến cuối sub nhớ mở lại: .Calculation = xlCalculationAutomatic
Cám ơn bạn nhiều, đúng là sub cuối đã giải quyết được vấn đề.Bạn tải file về chạy thử lần lượt 3 Sub CopyTO_Auto, CopyTO_Manual và CopyTO_Array trong Module LUUTT để xem sự khác biệt về thời gian thực hiện nhé!
Với máy của tôi, kết quả như sau:
- CopyTO_Auto (là code nguyên thủy của bạn): 4,02 giây.
- CopyTO_Manual (thêm lệnh như bài #6): 0,25 giây
- CopyTO_Array (Ghi vào mảng rồi chép ra sheet, không cần thêm lệnh Calculation...): 0,06 giây.
Có lẽ sub cuối cùng này sẽ giải quyết được vấn đề của bạn. (Có thể làm tương tự với sub INPICK)
Cám ơn bạn, lần sau mình cố sẽ gắng trình bày tốt hơn.Tôi thấy thế này:
1. Trong module đó có 2 Sub, muốn trình bày để người khác dễ dàng giúp được thì phải nói rõ là chạy Sub nào bị chậm: CopyTO hay INPICK? Đàng này bạn nói "dòng code Module LUUTT" là thứ gì: dòng nào của sub nào, hay là bất kỳ dòng nào?
2. Trong CopyTO có 2 dòng không liên quan gì đến vòng lặp For nhưng lại đặt trong đó, làm chậm thủ tục:
Set SourceRange = Sheets(" TO print").Range("B15:B15")
Set DestSheet = Sheets("Luu TT")
3. Vấn đề khả dĩ nhất dẫn đến làm chậm việc thực thi code có lẽ là do cái máy đó tính toán làm tươi kết quả bị chậm. Cách giải quyết như bài #6 đã chỉ ra hoặc ghi dữ liệu vào mảng rồi từ mảng ghi ra sheet.