Vấn đề với Application.ScreenUpdating (1 người xem)

  • Thread starter Thread starter chua123
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

chua123

Thành viên mới
Tham gia
10/5/14
Bài viết
25
Được thích
3
Giới tính
Nam
Chào các bác,
File excel của em, khi chạy một vài code, mặc dù đã không cho update màn hình Application.ScreenUpdating = False (cuối sub em đã trả về True), tuy nhiên thỉnh thoàng màn hình vẫn nhấp nháy trong quá trình chạy code, em không biết ngoài cái .ScreenUpdating thì còn cái gì nữa không ạ? hóng các bác giúp đỡ ạ.
 
Chào các bác,
File excel của em, khi chạy một vài code, mặc dù đã không cho update màn hình Application.ScreenUpdating = False (cuối sub em đã trả về True), tuy nhiên thỉnh thoàng màn hình vẫn nhấp nháy trong quá trình chạy code, em không biết ngoài cái .ScreenUpdating thì còn cái gì nữa không ạ? hóng các bác giúp đỡ ạ.
Theo tôi nghĩ, trong File của bạn có nhiều Sub, trong mỗi Sub lại có:
PHP:
Application.ScreenUpdating = False 
----------
Application.ScreenUpdating = true

dẫn tới màn hình vẫn bị giật khi chạy Code. Vì vậy theo kinh nghiệm của tôi là khử dần
PHP:
Application.ScreenUpdating = False 
----------
Application.ScreenUpdating = true
trong mỗi Sub sao cho thích hợp để hạn chế thấp nhất việc rung màn hình.
Đây cũng là 1 trường hợp tôi từng gặp và đúc rút kinh nghiệm từ bản thân.
 
Upvote 0
Theo tôi nghĩ, trong File của bạn có nhiều Sub, trong mỗi Sub lại có:
PHP:
Application.ScreenUpdating = False
----------
Application.ScreenUpdating = true

dẫn tới màn hình vẫn bị giật khi chạy Code. Vì vậy theo kinh nghiệm của tôi là khử dần
PHP:
Application.ScreenUpdating = False
----------
Application.ScreenUpdating = true
trong mỗi Sub sao cho thích hợp để hạn chế thấp nhất việc rung màn hình.
Đây cũng là 1 trường hợp tôi từng gặp và đúc rút kinh nghiệm từ bản thân.
Chả bao giờ dùng đến cái Application.ScreenUpdating, cứ mỗi khi viết một sub lại đi gõ vô tội vạ cái Application.ScreenUpdating có khi làm code chậm hơn ý.
 
Upvote 0
Theo tôi nghĩ, trong File của bạn có nhiều Sub, trong mỗi Sub lại có:
PHP:
Application.ScreenUpdating = False 
----------
Application.ScreenUpdating = true

dẫn tới màn hình vẫn bị giật khi chạy Code. Vì vậy theo kinh nghiệm của tôi là khử dần
PHP:
Application.ScreenUpdating = False 
----------
Application.ScreenUpdating = true
trong mỗi Sub sao cho thích hợp để hạn chế thấp nhất việc rung màn hình.
Đây cũng là 1 trường hợp tôi từng gặp và đúc rút kinh nghiệm từ bản thân.
Kinh nghiệm thì có nhưng cách sử lý hơi hẹp. Có lẽ do trên diễn đàn này, khi nói chuyện code ngừoi ta chỉ quan tâm đến tốc độ chứ không hề nói tới vấn đề quản lý code.
Khi có nhiều hơn vài ba functions/subs thì phải chú ý đến vấn đề quản lý code:
- Khi có trường hợp các subs/functions gọi nhau thì sẽ rất dễ xảy ra việc các code này bị đụng chạm nhau trong việc sử dụng các objects toàn cục.
Application là một object toàn cục. Thuộc tính ScreenUpdating của nó vì là public cho nên cũng có tính chất toàn cục.
Hai subs A và B cùng đặt ScreenUpdating là False rồi trả nó về True sẽ không sao nếu A và B không liên hệ gì với nhau. Nhưng nếu A gọi B thì B sẽ đưa ScreenUpdating về True khiến cho A bị hẫng.
Người biết quản lý code luôn luôn có cách tránh trường hợp này. Một trong những cách tránh là cho sub save lại các giá trị toàn cục trước khi thay đổi chúng, và sau khi dùng xong thì trả chúng về các giá trị đã saved.

Tóm lại, nếu có nhiều subs gọi nhau thì tất cả các code ScreenUpdating phải sửa lại như thế này:
Dim Saved_ScreenUpdating As Boolean
Saved_ScreenUpdating = Application.ScreenUpdating
Application.ScreenUpdating = False
... code ở đây
Application.ScreenUpdating = Saved_ScreenUpdating
+++ Với cách quản lý này, nếu A gọi B thì B sẽ trả ScreenUpdating về đúng với tình trạng mà A đã đặt, và A không bj hẫng.

Chả bao giờ dùng đến cái Application.ScreenUpdating, cứ mỗi khi viết một sub lại đi gõ vô tội vạ cái Application.ScreenUpdating có khi làm code chậm hơn ý.
Hình như trường phái trên diễn đàn này kỵ cái "chậm". Cứ 10 bài có đến 9 nói chuyện tốc độ.
 
Upvote 0
Hình như trường phái trên diễn đàn này kỵ cái "chậm". Cứ 10 bài có đến 9 nói chuyện tốc độ.
Em thì lại rất thích cái chuyện chạy như rùa này, chả thế em dùng máy tính cấu hình thấp lắm, có như vậy máy tính nó mới chạy theo mình, nhanh quá là mình lại phải chạy theo nó, thà để máy tính chạy phát khói ròi mình đi "tơi" chứ ngồi so nhịp nhanh chậm với máy tính chán lắm anh ơi.
 
Upvote 0
Web KT

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

Back
Top Bottom