Xin hỏi sao nút lưu trên form chạy chậm?

Liên hệ QC

win-sun

Thành viên hoạt động
Tham gia
19/1/09
Bài viết
151
Được thích
15
- Kính chào cả nhà! chúc mừng sinh nhật vui vẻ.
- Mình xin gửi file nhờ các bạn chỉ giúp, sao cái nút lưu trên form thực hiện của mình chạy quá chậm, khi dử liệu lớn lên nó còn thê thảm hơn.
- khi đang mở form mình có thể lick ra ngoài bảng excel được không ?
- các bạn có thể giúp mình thiết kế lại form thực hiện sao cho nhập được nhiều mã số (khoảng 10 mã số) rồi lưu một lần xem có được không?

Ghi chú:
- File này em xài advance filter chọn lọc theo các điều kiện để trích xuất ra sheet report cho dễ xem và cập nhật
- các phát sinh đơn hàng thì em nhập vào dathang
- dử liệu từ 2 form sẽ coppy và dán vào sheet capnhat

Xin chân thành cảm ơn.
 
to:Win-sun
Mình xin mạo muội trả lời bạn như sau:
- Khi đang mở form vẫn có thể kick chuột và thao tác trên bảng tính excel được. Bằng cách bạn thêm vào tham số : "UserForm1.Show modess"
- Chỗ nhập liệu của trường " ngày thực hiện" bạn nên sử dụng calenner cho dễ và chính xác.
mình gửi kèm file :D
- Mình cũng không biết tại sao file của bạn lại chạy chậm nữa, chắc phải nhờ các cao thủ trên diễn đàn giúp thôi
 

File đính kèm

  • dat hang.rar
    112.5 KB · Đọc: 52
- mình chưa xem file bạn gui nũa nhưng mình cảm ơn bạn thật nhiều vì đã quan tâm, chúc bạn nhiều niềm vui nhé!
- cái ngày thực hiện mình cũng muốn làm calen nhưng trong máy mình không có
 
Chà không có cao thủ nào trả lời giúp bạn sun xem là tại sao file này lại chạy chậm nhỉ. Kiến thức của mình còn hạn hẹp lắm nên không trả lời giúp được
 
- vấn đề là ở cái code thôi nhưng mình chưa hiểu nhiều về nó , mình không biết nó có hợp lý hay không chưa thôi, mong mọi người xem giúp!
 
Chương trình viết bằng VBA trong Excel chạy chậm là do những nguyên nhân sau:
- Trong file Excel đặt quá nhiều công thức và Option đang để chế độ Auto Calculation. Mỗi một hàm của Excel sẽ mất một khoảng thời gian để tính toán, và mỗi một thay đổi của bảng tính sẽ bắt hàm Excel tính toán lại do chế độ Auto. Vì vậy file càng nhiều công thức thì càng mất thời gian tính toán. Đây là nguyên nhân chính làm chậm file của bạn khi ấn vào nút Lưu.
- Khi thực thi lệnh VBA, file Excel sẽ thực hiện một số hiệu ứng không mong muốn do người viết code không đặt câu lệnh tắt/mở. Ví dụ: fresh lại màn hình, tự động tính toán... Vì vậy khi viết code người viết thường xuyên đưa vào những câu lệnh sau để làm giảm thời gian thực thi:
Application.ScreenUpdating = False - Ngăn không cho Excel vẽ lại màn hình
Application.Calculation = xlCalculationManual - Tắt chế độ tự động tính toán mỗi khi thay đổi
Application.DisplayAlerts = False - Tắt chế độ cảnh báo
.... và một số cái khác nữa

Mấy lời khuyên cho bạn như sau:
- Ít nhiều bạn đã biết ve VBA, vậy trong chương trình của bạn nên hạn chế đặt công thức bằng hàm trong file Excel (cái này làm chậm chươgn trình). Mọi công thức tính toán bạn nên viết trong code và chỉ đưa ra kết quả vào range thôi.
- Hạn chế của Excel là dữ liệu càng lớn thì tốc độ truy cập dữ liệu càng chậm, đồng thời về mặt lưu trữ dữ liệu là không an toàn. Tốt nhất bạn nên kết hợp giữa Excel và Access, về điều này bạn nghiên cứu thêm ADO, trong diễn đàn nhiều lắm. Việc sử dụng ADO để kết hợp giữa Excel và Acces làm chương trình rất ổn định và nhanh.
 
Đúng như bạn anhthuan đã nói, excel nhiều công thức tính toán quá nên mỗi lần có thao tác trên sheet là nó tính toán lại. Để hạn chế việc này thì bạn viết câu lệch mỗi khi khởi động file thì các các sheet chứa công thức sẽ không tính toán ( VD : sheet1.EnableCalculation=False, sheet2.EnableCalculation=False .....), như vậy khi bạn thao tác nhập klệu thì các sheet này sẽ " đứng yên" nên bạn thao tác nhanh. Khi cần kết quả tính toán của sheet nào thì bạn đặt 1 nút lệnh tại sheet đó và gán cho macro với nội dung : sheet1.EnableCalculation= True ; sheet1.EnableCalculation=False là xong. Bạn nên đặt công thức trong sheet hạn chế lạm dụng macro vì sẽ dể kiểm soát
 
Web KT
Back
Top Bottom