Khắc phục thời gian chạy code VBA khác nhau giữa hai máy tính

Liên hệ QC

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
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
 

File đính kèm

  • MAU.xlsm
    1.8 MB · Đọc: 18
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.
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ự?
 
Upvote 0
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ộ.
Bài đã được tự động gộp:

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ự?
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 .
 
Lần chỉnh sửa cuối:
Upvote 0
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
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.
 
Lần chỉnh sửa cuối:
Upvote 0
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)
 

File đính kèm

  • MAU_sony18102012.xlsm
    1.7 MB · Đọc: 8
Upvote 0
Đ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 đã hướng dẫn.
Bài đã được tự động gộp:

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 nhiều, đúng là sub cuối đã giải quyết được vấn đề.
Bài đã được tự động gộp:

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.
Cám ơn bạn, lần sau mình cố sẽ gắng trình bày tốt hơn.
 
Upvote 0
Cũng không loại trừ việc người hỏi cố tình làm 'vậy' để nhận được câu trả lời & thấy rõ mọi ngóc ngách vấn đề.
 
Upvote 0
Web KT
Back
Top Bottom