Em có ví dụ này nhờ mọi người xem cho em nhé! Sao cập nhật dữ liệu từ form xuống bảng tính lại chậm đến vậy? Nguyên nhân?
Câu hỏi cụ thể trong file đính kèm!
Em có ví dụ này nhờ mọi người xem cho em nhé! Sao cập nhật dữ liệu từ form xuống bảng tính lại chậm đến vậy? Nguyên nhân?
Câu hỏi cụ thể trong file đính kèm!
VÌ bạn đã tắt màn hình cập nhập Application.ScreenUpdating=False rồi nên chỉ khi kết thúc Form KHI ĐÓ dữ liệu mới cập nhập xuống sheets.
Mặt khác listbox1 của bạn lại là liên kết Rowsource và theo name VUNG, name này lại là name động theo "countA(..) chỉ cập nhập khi có dữ liệu dưới sheet" nên vùng bị dưới hạn đến dòng cuối dữ liệu +1 (vì bạn không trừ đi tiêu đề khi điếm CountA(...) cả cột)==> bạn thấy lần đầu tiên bấm save thì có thấy list box them dòng, còn lần 2 thì không,
Túm lại không phải Sub đơ hay chậm, mà do Sheet chưa cập nhập Listbox1 thì liên kết vùng chưa cập nhập ==> bạn tưởng bị sao, chỉ khi bạn bấm Cancel đóng form (dĩ nhiên ý nghĩa của nút Cancel không đúng theo tiêu đề của nó)
Đó là lời giải thích hợp lý,
Vậy giải pháp thế nào:
Thông thường người ta không dùng Listbox với Rowsource thế - và quan trọng là trên form và tạm chứa vào 1 biến Array đã sau đó bấm nút kết thúc sẽ hỏi có cập nhập dữ liệu vừa xong không khi đó NẾU CÓ mới gán thực xuống sheets
Tuy nhiên nếu bạn vẫn muốn giữ nguyên si như code thì bạn làm các bước sau:
1- Sửa lại Name VUNG cho đúng phạm vi: sửa COUNTA(DATA!$A:$A) thành COUNTA(DATA!$A:$A)-1
2- Trong Code vì muốn màn hình cập nhập thì bạn phải bỏ hết các câu lệnh 'Application.ScreenUpdating = False đi (để luôn cập nhập màn hình)
-- hoặc tại chỗ cần cập nhập (khi bấm SAVE) thì bạn phải bật màn hình trở lại Application.ScreenUpdating = TRUE, sau đó lại tắt đi
3- Trong CODE nut save - sau khi gán xuống sheets rùi thì để cập nhập cho listbox1 thì bạn đặt lệnh này set lại Rowsource cho nó
PHP:
Listbox1.RowSource = "Vung"
vì thấy bạn viết code ngon lành rùi, nên chắc chắn bạn tự sửa được, và đó chỉ là đề xuất giải pháp tình thế thôi.còn giải pháp tốt nhất thì phải tùy vào quan niệm và cách tổ chức toàn bộ ứng dụng của bạn
Em có ví dụ này nhờ mọi người xem cho em nhé! Sao cập nhật dữ liệu từ form xuống bảng tính lại chậm đến vậy? Nguyên nhân?
Câu hỏi cụ thể trong file đính kèm!
Nếu tôi không hiểu sai lời giải thích của vodoi2x cho bạn - nếu hiểu sai thì xin lỗi nhé- thì có chút chưa chính xác nên tôi bổ sung thêm.
Khi bạn nhấn Save thì cả dữ liệu trên sheet, Vung và trong ListBox đều cập nhật ngay tức khắc chứ không phải chưa được cập nhật. ......
Đúng thế, dùng từ chưa chuẩn sát, nói một cách chuẩn sát là Mọi thứ đã được cập nhập nhưng chỉ riêng MÀN HÌNH (phần nhìn thấy) LÀ CHƯA ĐƯỢC CẬP NHẬP - vì trong code bebeen đã tắt cập nhập màn hình,
Vậy giải pháp sửa là bebeen chỉ cần sửa 2 bước bài #3 trên (bước 1- 2-) thui, không cần bước 3-
------------- dùng riêng bước 3- trong trường hợp khi bạn muốn tắt CẬP NHẬP MÀN HÌNH SHEET song VẪN MUỐN THẤY CẬP NHẬP (UPDATING) CHO Listbox1
vậy bebeen cứ test đi nhé, còn việc làm theo cách nào thì tùy chọn