Màn hình chạy code thay đổi khi dùng lệnh Call

Liên hệ QC

Phương Phương mito

Thành viên thường trực
Tham gia
1/5/19
Bài viết
275
Được thích
65
Kính gửi Anh chị
Khi em viết một bài toán. Em chia nhỏ nó ra thành nhiều Sub. sau đó em dùng lệnh Call để nối liên tiếp theo bước nhưng màn hình nó cứ nhảy chỗ nọ, sang chỗ kia...khi xong nó mới dừng. Em muốn nó chỉ ở màn hình chỗ em bấm nút thì làm sao ạ. Em đã thử như sau mà vẫn bị ạ. Mong các anh chị cho ý kiến giúp em ạ.

Sub Tong_hop ()

Application.ScreenUpdating = False
Call Phan_1
Call Phan_2
Call Phan_3
Application.ScreenUpdating = True
End sub
 
Úp hết code mấy cái Phan_1,2,3 lên thì thầy bói mới phán được tại sao.
 
Upvote 0
Có khi các cục code Phan_1, 2, 3 có câu lệnh Select hoặc activate các kiểu
 
Upvote 0
Kính gửi Anh chị
Khi em viết một bài toán. Em chia nhỏ nó ra thành nhiều Sub. sau đó em dùng lệnh Call để nối liên tiếp theo bước nhưng màn hình nó cứ nhảy chỗ nọ, sang chỗ kia...khi xong nó mới dừng. Em muốn nó chỉ ở màn hình chỗ em bấm nút thì làm sao ạ. Em đã thử như sau mà vẫn bị ạ. Mong các anh chị cho ý kiến giúp em ạ.

Sub Tong_hop ()

Application.ScreenUpdating = False
Call Phan_1
Call Phan_2
Call Phan_3
Application.ScreenUpdating = True
End sub
Phải dồn 3 sub con thành 1 thôi. Tuy Application.ScreenUpdating = False nhưng Call nhiều sub con là nó chuyển màn hình à.
 
Upvote 0
Anh lại vẽ đường cho voi chạy rồi.
Thế là sai à? :p
Phải dồn 3 sub con thành 1 thôi. Tuy Application.ScreenUpdating = False nhưng Call nhiều sub con là nó chuyển màn hình à.
Chia nhỏ sub (Chia nhỏ 1 cách khoa học) là cách quản lý code tốt mà? Chia nhỏ dễ quản lý, dễ sửa chữa, và sub con có thể chạy nhiều lần ở những sub lớn khác nhau mà không cần viết nhiều lần.
 
Upvote 0
Chia nhỏ sub (Chia nhỏ 1 cách khoa học) là cách quản lý code tốt mà? Chia nhỏ dễ quản lý, dễ sửa chữa, và sub con có thể chạy nhiều lần ở những sub lớn khác nhau mà không cần viết nhiều lần.
Đây là tôi nói việc xử lý nhanh cái vấn đề của thớt thôi. Còn chuyện chia sub tác động tới Workbook mà vẫn muốn không bị chuyển màn hình thì tôi không biết nên không dám bàn.
 
Upvote 0
Đây là tôi nói việc xử lý nhanh cái vấn đề của thớt thôi. Còn chuyện chia sub tác động tới Workbook mà vẫn muốn không bị chuyển màn hình thì tôi không biết nên không dám bàn.
Vụ chuyển màn hình thì giả sử do mỗi sub con đều có câu select sheet thì gộp hay không cũng vậy thôi, (đó là tôi đoán vậy)
 
Upvote 0
Kính gửi Anh chị
Khi em viết một bài toán. Em chia nhỏ nó ra thành nhiều Sub. sau đó em dùng lệnh Call để nối liên tiếp theo bước nhưng màn hình nó cứ nhảy chỗ nọ, sang chỗ kia...khi xong nó mới dừng. Em muốn nó chỉ ở màn hình chỗ em bấm nút thì làm sao ạ. Em đã thử như sau mà vẫn bị ạ. Mong các anh chị cho ý kiến giúp em ạ.

Sub Tong_hop ()

Application.ScreenUpdating = False
Call Phan_1
Call Phan_2
Call Phan_3
Application.ScreenUpdating = True
End sub
Mà bạn cũng nên đưa các code còn lại lên đây, có khi không cần tác động trực tiếp lên sheet cũng nên
 
Upvote 0
Đúng anh ạ. Có cách nào vẫn có Select và active mà nó chỉ ở màn hình bấm nút cho đến khi chạy xong không ạ !
Có thể trong code của bạn chủ yếu là xử lý số liệu nhưng bạn vẫn chưa rành về code nên có thể chọn select nhiều nơi. Nên nó mới vậy. Nếu bạn nói yêu cầu rõ hoặc gởi file code của bạn lên thì các vấn đề của bạn sẽ được giải quyết. Có khi không có lệnh nào select trong code cả
 
Upvote 0
Mình đoán cả 3 sub đều có kiểu "tăng tốc" bằng cách bắt đầu thì gán screenupdating = false, kết thúc gán = true nên các lệnh nằm giữa và sau 3 lệnh call này sẽ cập nhật màn hình bình thường.
 
Upvote 0
Luật sử dụng hàm con để thay đổi trạng thái hệ thống:

Khi Sub có khả năng được gọi bởi Sub khác thì các lệnh ảnh hưởng chung như ScreenUpdating phải được Sub nhớ và trả lại trạng thái ban đầu (trước khi vào Sub).

Sub BiGoi1()
biGoiSrceenUpdate = Application.ScreenUpdating
Application.ScreenUpdating = False
...
Application.ScreenUpdating = biGoiScreenUpdate
' hàm con phải trả trạng thái về giống lúc nó bắt đầu
' chứ không thể tuỳ tiện trả trạng thái vể mặc định.

End Sub

Sub GoiSubKhac()
Application.ScreenUpdating = False
Call BiGoi
...
Application.ScreenUpdating = True
' chỉ cái hàm lớn nhất mới có quyền định đoạt trạng thái mặc định
End Sub
 
Upvote 0
Upvote 0
Upvote 0
Web KT

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

Back
Top Bottom