Tăng tốc code VBA khi coppy, paste

Liên hệ QC

ThaiDieuAnh

Thành viên hoạt động
Tham gia
8/8/16
Bài viết
139
Được thích
24
Nghề nghiệp
Xây dựng
Trước em hay dùng code
Mã:
Sheet1.Range("A1:F1000").Copy
Sheet2.Range("A1").PasteSpecial
Application.CutCopyMode = False
Giờ thay bằng:
Mã:
Sheet1.Range("A1:F1000").Copy Destination:=Sheet2.Range("A1")
em thấy code được cải thiện về tốc độ rất đáng kể, tuy nhiên với kiểu coppy chèn hàng kiểu:
Mã:
Sheet1.Range("A1:F1000").Copy
Sheet2.Range("A1").Insert Shift:=xlDown
Application.CutCopyMode = False
thì rất chậm mà không biết cách để sửa đoạn code này tốc độ tốt hơn, mong các anh chị giúp đỡ. Em xin cảm ơn
 
Nếu lấy giá trị thôi thì:
PHP:
Sub PasteValue
Dim arr
arr=Sheet1.Range("A1:F1000").value
Sheet2.Range("A1").Resize(Ubound(arr,1),Ubound(arr,2)).Value = arr
End Sub
 
Upvote 0
Trước em hay dùng code
Mã:
Sheet1.Range("A1:F1000").Copy
Sheet2.Range("A1").PasteSpecial
Application.CutCopyMode = False
Giờ thay bằng:
Mã:
Sheet1.Range("A1:F1000").Copy Destination:=Sheet2.Range("A1")
em thấy code được cải thiện về tốc độ rất đáng kể, tuy nhiên với kiểu coppy chèn hàng kiểu:
Mã:
Sheet1.Range("A1:F1000").Copy
Sheet2.Range("A1").Insert Shift:=xlDown
Application.CutCopyMode = False
thì rất chậm mà không biết cách để sửa đoạn code này tốc độ tốt hơn, mong các anh chị giúp đỡ. Em xin cảm ơn
Thử vầy:
Mã:
Sub PasteNhanh()
     Sheet1.Range("A1").CurrentRegion.Copy Sheet2.Range("A1")
End Sub
 
Upvote 0
Cảm anh anh be09, nhưng em muốn là Insert Copied Cells anh ạ, với lại có cách nào coppy mà giữ nguyên chiều cao hàng không anh
Tại sao lại phải làm khó nhau vậy, Excel thì mình nhập liệu từ trên xuống chứ tại sao lại chen vào giữa trong khi phía dưới còn rất nhiều hàng (Trừ một số trường hợp cần sắp xếp thứ tự mà không thể thêm vào phía dưới). Bạn nêu nguyên nhân nếu phù hợp có thể đổi sang cách khác để giải quyết vấn đề.
 
Upvote 0
Tại sao lại phải làm khó nhau vậy, Excel thì mình nhập liệu từ trên xuống chứ tại sao lại chen vào giữa trong khi phía dưới còn rất nhiều hàng (Trừ một số trường hợp cần sắp xếp thứ tự mà không thể thêm vào phía dưới). Bạn nêu nguyên nhân nếu phù hợp có thể đổi sang cách khác để giải quyết vấn đề.
Đúng rồi anh ạ, bình thường thì em vẫn giải quyết vấn đề như trong bài #1, nhưng cái này cần chèn giữa cần trên và cận dưới đã có dữ liệu nêm áp dụng code
Mã:
Sheet1.Range("A1:F1000").Copy
Sheet2.Range("A1").Insert Shift:=xlDown
Application.CutCopyMode = False
Tuy nhiên em cảm thấy chạy rất chậm, không giống kiểu coppy paste kia. Nên em muốn nhờ anh chị hướng dẫn sửa code đó ạ. Cảm ơn anh
 
Upvote 0
Đúng rồi anh ạ, bình thường thì em vẫn giải quyết vấn đề như trong bài #1, nhưng cái này cần chèn giữa cần trên và cận dưới đã có dữ liệu nêm áp dụng code
Mã:
Sheet1.Range("A1:F1000").Copy
Sheet2.Range("A1").Insert Shift:=xlDown
Application.CutCopyMode = False
Tuy nhiên em cảm thấy chạy rất chậm, không giống kiểu coppy paste kia. Nên em muốn nhờ anh chị hướng dẫn sửa code đó ạ. Cảm ơn anh

Nếu muốn nhanh thì cách đơn giản nhất là cứ nhập liệu theo chiều dọc sau đó Sort nó theo trình tự nào đó.
Khi dữ liệu không cố định số dòng thì không nên nghĩ đến cái vụ Insert, vì phải tra tìm đến chỗ cần rồi tính đến số dòng cần Insert có khi tốc độ code còn chậm hơn.
 
Upvote 0
Nếu muốn nhanh thì cách đơn giản nhất là cứ nhập liệu theo chiều dọc sau đó Sort nó theo trình tự nào đó.
Khi dữ liệu không cố định số dòng thì không nên nghĩ đến cái vụ Insert, vì phải tra tìm đến chỗ cần rồi tính đến số dòng cần Insert có khi tốc độ code còn chậm hơn.
Em xin gửi file giả định trường hợp của em lên, mong anh chị giúp đỡ (Yêu cầu em ghi rõ trong File). Em xin cảm ơn
 

File đính kèm

  • Coppy Paste.xlsm
    23.7 KB · Đọc: 8
Upvote 0
Chậm nhiều không? Tức là khác nhau bao nhiêu phút?
Nếu chỉ chậm 1 chút xíu thì bận tâm làm gì. Copy dữ liệu thì sự chính xác và khả năng uyển chuyển mới quan trọng. Bày biện chạy cho lẹ nhưng mỗi lần có sự thay đổi nhu cầu lại phải chỉnh 1 đống code, thử đi thử đi thử lại chính xác, thậm chí bí, gửi lên diễn đàn chờ trả lời thì thực là chả bõ công.
 
Upvote 0
Em xin gửi file giả định trường hợp của em lên, mong anh chị giúp đỡ (Yêu cầu em ghi rõ trong File). Em xin cảm ơn
Đọc xong chẳng hiểu, làm đại hên thì trúng:
1/ Tại sheet Bang In khi thay đổi dữ liệu thì nhấn nút nhập liệu thì nó lưu cái bảng ở sheet Link.
2/ Nhấn nút nhập liệu lần 2, 3, 4..... thì nó Paste liên tiếp xuống.
 

File đính kèm

  • Coppy Paste.xlsm
    20 KB · Đọc: 7
Upvote 0
Trước em hay dùng code
Mã:
Sheet1.Range("A1:F1000").Copy
Sheet2.Range("A1").PasteSpecial
Application.CutCopyMode = False
Giờ thay bằng:
Mã:
Sheet1.Range("A1:F1000").Copy Destination:=Sheet2.Range("A1")
em thấy code được cải thiện về tốc độ rất đáng kể, tuy nhiên với kiểu coppy chèn hàng kiểu:
Mã:
Sheet1.Range("A1:F1000").Copy
Sheet2.Range("A1").Insert Shift:=xlDown
Application.CutCopyMode = False
thì rất chậm mà không biết cách để sửa đoạn code này tốc độ tốt hơn, mong các anh chị giúp đỡ. Em xin cảm ơn
cho em xin mã code hoàn chỉnh để copy phần bôi vàng trong sheet N3 rồi insert copied cell vào các sheet khác với ạ
 

File đính kèm

  • file boi vang.xlsx
    794.4 KB · Đọc: 0
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom