Calculation_Tự động và thủ công

Liên hệ QC

hvnhpro

Thành viên hoạt động
Tham gia
3/3/11
Bài viết
127
Được thích
73
Giới tính
Nam
Em chào Anh/Chị GPE,
Em đang gặp vướng vấn đề về Calculate mà em tìm tòi mãi chưa ra. Nên em mong Anh/Chị giúp em xử lý vấn đề sau.

Vấn đề:
em dùng code copy dữ liệu đang có công thức và paste value để chạy file nhanh hơn. Do vùng copy chứa công thức tính, nên giá trị paste value có 1 phần dữ liệu chưa đúng.

Nguyên nhân:
Do file nhiều dòng dữ liệu và có công thức vlookup nên, Em có đặt
Mã:
Application.Calculation = xlCalculationManual
, xong trước khi copy để paste value em đã đặt lại từ Manual sang
Mã:
Application.Calculation = xlAutomatic
rồi mới chạy code copy dữ liệu và paste value.

Giải pháp tạm thời:
Em có dùng đoạn code tạm dừng nghỉ 1 thời gian
Mã:
Application.Wait (Now + TimeValue("0:10:02"))
để calculate rồi mới chạy tiếp copy dữ liệu. Nhưng chưa được tối ưu.

Em cảm ơn Anh/Chị đã đọc bài viết của em.
 
Thử đưa code của bạn lên coi nào.
Em gửi Anh code em đang dùng.
Do file nặng nên em để chế độ Calculation Manual, lúc chạy code mới cho tính toán ạ.

Mã:
Sub ZPaste()

Application.Calculation = xlAutomatic
    Range("W4:Y4").Select
    Selection.Copy
    Range("W10:Y" & getLR("SK", "T")).Select
    ActiveSheet.Paste
ActiveWorkbook.Save

Application.Wait (Now + TimeValue("0:10:02"))

ActiveWorkbook.Save
    Range("W10:Y" & getLR("SK", "W")).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Application.Calculation = xlCalculationManual
End Sub
 
PHP:
Sub ZPaste()
    Dim lastRow as long
    Application.Calculation = xlCalculationManual
    lastRow = getLR("SK", "T")
    Range("W4:Y4").Copy
    Range("W10:Y" & lastRow ).PasteSpecial xlPasteAll
    Thisworkbook.Save
    lastRow = getLR("SK", "W")
    Range("W10:Y" & lastRow ).value =  Range("W10:Y" & lastRow ).value2
    Application.Calculation = xlAutomatic
End Sub
 
PHP:
Sub ZPaste()
    Dim lastRow as long
    Application.Calculation = xlCalculationManual
    lastRow = getLR("SK", "T")
    Range("W4:Y4").Copy
    Range("W10:Y" & lastRow ).PasteSpecial xlPasteAll
    Thisworkbook.Save
    lastRow = getLR("SK", "W")
    Range("W10:Y" & lastRow ).value =  Range("W10:Y" & lastRow ).value2
    Application.Calculation = xlAutomatic
End Sub
Em cảm ơn Anh befaint.
Em thử code chạy đúng rồi ạ.
 
Web KT

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

Back
Top Bottom