Cải thiện được tốc độ nhập dữ liệu từ form nhập liệu

Liên hệ QC

huyen891977

Thành viên chính thức
Tham gia
15/11/08
Bài viết
87
Được thích
16
Nghề nghiệp
nojob
Chào các bác trên GPE! hiện mình đang gặp khó khăn nhưng chưa có cách giải quyết, mong các bác chỉ giùm nhé. Vấn đề thế này, File của mình có tạo form nhập liệu, trên form có nhiều textboxes và comboboxes khi mình nhập dữ liệu từ form này thì dữ liệu đưa vào sheet rất chậm (các công thức tính toán mình đưa đặt trên form, trong file phần lớn mình dùng VBA không dùng công thức) mong các cao thủ chỉ giùm cách khắc phục. Thân chào!
 
Chào các bác trên GPE! hiện mình đang gặp khó khăn nhưng chưa có cách giải quyết, mong các bác chỉ giùm nhé. Vấn đề thế này, File của mình có tạo form nhập liệu, trên form có nhiều textboxes và comboboxes khi mình nhập dữ liệu từ form này thì dữ liệu đưa vào sheet rất chậm (các công thức tính toán mình đưa đặt trên form, trong file phần lớn mình dùng VBA không dùng công thức) mong các cao thủ chỉ giùm cách khắc phục. Thân chào!


Đưa vào chậm là sao?

Thường chậm là do tốc độ nào?

Cần nói rõ hơn nhé,
 
Upvote 0
Dữ liệu trên form nhập vào sheet là 13 cột và mỗi lần nhập dao động từ 3 đến 8 dòng ( nghĩa là 1 hóa đơn xuất của 1 khách hàng có nhiều mặt hàng và nhiều giá) Khi nhập dữ liệu vào form xong mình nhấp lệnh nhập để đưa dữ liệu vào, khi đó dữ liệu đưa vào sheet từng ô một (13 cột x 8 dòng = 104 ô ) như thế mỗi lần nhập thì mất hơn 1 phút thì dữ liệu trên form mới đưa hết vào sheet. Nhờ bạn chỉ hướng khắc phục nhé. Thân
 
Upvote 0
Nếu mà file không có công thức nhiều và dùng form nhập liệu thì ít khi chậm bạn có thể bỏ
Application.ScreenUpdating = False
vào xem thử hoặc gửi file lên diễn đàn
 
Upvote 0
Mình tìm được nguyên nhân là do ở sheet XNT có 1 cột có chứa công thức thống kê tổng số lượng xuất của từng mặt hàng, mình đã xóa luông công thức ở cột này và dùng macro để ghi lại quá trình này. Tốc độ nhập liệu bây giờ nhanh hơn vài chục lần luôn, mừng quá, ha ha...
 
Upvote 0
Mình tìm được nguyên nhân là do ở sheet XNT có 1 cột có chứa công thức thống kê tổng số lượng xuất của từng mặt hàng, mình đã xóa luông công thức ở cột này và dùng macro để ghi lại quá trình này. Tốc độ nhập liệu bây giờ nhanh hơn vài chục lần luôn, mừng quá, ha ha...

Thế thì muốn giữ công thức đó thì bạn thêm CODE sau

Vào đầu SUB thì dùng
PHP:
Application.Calculation = xlCalculationManual

Trước khi kết thúc END SUB thì thêm
PHP:
Application.Calculation = xlCalculationAutomatic

.
 
Upvote 0
Nếu thử vẩn không được thì đưa file lên xem thử ---> Sao nhập liệu (không có công thức) mà tốc độ lại chậm nhỉ? ---> Hơi khó hiểu
???
Nguyên văn bởi huyen891977
Mình tìm được nguyên nhân là do ở sheet XNT có 1 cột có chứa công thức thống kê tổng số lượng xuất của từng mặt hàng.

Theo cách của bạn Tiger-- thì hai câu lệnh trên dùng tắt chức năng Automatic trong mục Calculation. Như vậy muốn cập nhật số liệu thì phải nhấn F9.

 
Upvote 0
Thế thì muốn giữ công thức đó thì bạn thêm CODE sau

Vào đầu SUB thì dùng
PHP:
Application.Calculation = xlCalculationManual

Trước khi kết thúc END SUB thì thêm
PHP:
Application.Calculation = xlCalculationAutomatic

.

Cách này chẳng qua là các hạ đưa việc tính toán "ra đằng sau" thối! Mấu chốt vấn đề lại là chuyện khác! Cụ thể là thiết kế lại cấu trúc dữ liệu như thế nào? Hạn chế tối đa công thức trong sheet và thay thế bằng VBA, v.v.... Chứ còn nếu như trong sheet mà có hàng đống công thức thì F9, hay xlCalculationAutomatic cũng chẳng giải quyết được vấn đề. Tại hạ đã từng gặp trường hợp ấn F9 và đợi "đến khi uống xong ly cafe"! Hic!
 
Upvote 0
Dữ liệu trên form nhập vào sheet là 13 cột và mỗi lần nhập dao động từ 3 đến 8 dòng ( nghĩa là 1 hóa đơn xuất của 1 khách hàng có nhiều mặt hàng và nhiều giá) Khi nhập dữ liệu vào form xong mình nhấp lệnh nhập để đưa dữ liệu vào, khi đó dữ liệu đưa vào sheet từng ô một (13 cột x 8 dòng = 104 ô ) như thế mỗi lần nhập thì mất hơn 1 phút thì dữ liệu trên form mới đưa hết vào sheet. Nhờ bạn chỉ hướng khắc phục nhé. Thân

Nếu bạn đã dùng Form để nhập liệu thì chắc chắn bạn đã sử dụng đến VBA. Mà với VBA thì tốc độ rất nhanh. Không chỉ với 104 ô mà có thể hơn thế nữa, tốc độ của việc nhập liệu rất nhanh (<1s)
Có thể trong file của bạn gặp vấn đề gì đó. Bạn đưa nguyên file nhập liệu lên để anh em xem giúp bạn nha.
 
Upvote 0
Trong file mình gần như đều sử dụng VBA, chỉ còn sheet TN duy nhất có chứa công thức ở 2 cột :
- Tính tổng số lượng của các mặt hàng đã xuất (lấy dữ liệu từ sheet XUAT). Công thức : IF($A2="","",SUMIF(OFFSET(KH,,2,,),TN!$A2,OFFSET(KH,,4,,))) được fill xuống 1000 dòng
- Tính số lượng tồn của các mặt hàng. Công thức : SUM(D2,-E2) được fill xuống 1000 dòng
Ở sheet này trước đây mình có macro để tổng hợp số lượng của các mặt hàng nhập từ sheet NHAP
Mình đưa hai công thức trên vào VBA.
Mã:
[/COLOR]
[COLOR=purple]Sub XuatTon()
    Application.ScreenUpdating = False
    Range("E2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC1="""","""",SUMIF(OFFSET(KH,,2,,),TN!RC1,OFFSET(KH,,4,,)))"
    Range("E2").Select
    Selection.AutoFill Destination:=Range("E2:E1000"), Type:=xlFillDefault
    Range("F2").Select
    ActiveCell.FormulaR1C1 = "=SUM(RC[-2],-RC[-1])"
    Range("F2").Select
    Selection.AutoFill Destination:=Range("F2:F1000"), Type:=xlFillDefault
    Application.ScreenUpdating = True
End Sub
Mình tạo nút lệnh trên sheet TN để thực hiện công việc này, và mình tạo thêm một macro để xóa dữ liệu trong 2 cột trên sau khi xem số lượng xuất - tồn của các mặt hàng.
Mã:
[COLOR=red]Sub XoaDuLieu()
On Error Resume Next
Application.ScreenUpdating = False
Range("E2:F1000").Select
Selection.ClearContents
Application.ScreenUpdating = True
End Sub
[/COLOR]Như vậy file chẳng còn công thức nào và việc nhập liệu từ form rất nhanh.
Mình nhờ các bạn gợi ý cho trường hợp này phải thực hiện ntn để được tiện lợi. Thân chào !
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Cho mình xin cái file mà bạn đang bí được ko?
Thân.
 
Upvote 0
Nếu mình để nguyên dữ liệu trên file thì e bất tiện, còn nếu xóa bớt dữ liệu và công thức đi thì file đâu bị vấn đề. Bạn có thể cho mình địa chỉ mail mình gởi nhờ bạn xem giùm ?
Mail của mình : ly_sailam@yahoo.com.vn. Thân Po_Pi
 
Upvote 0
Web KT

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

Back
Top Bottom