Nhờ gộp 2 đoạn code với nhau

Liên hệ QC

marcosheath479

Thành viên chính thức
Tham gia
23/2/22
Bài viết
53
Được thích
5
Chào mọi người,
Mình có 2 đoạn code (tìm trên mạng) để tắt các chức năng không cần thiết, nhưng mình không biết gộp 2 code này với nhau. Mong mọi người giúp đỡ. Cám ơn mọi người rất nhiều.
Mã:
Public CalcState As Long
Public EventState As Boolean
Public PageBreakState As Boolean

Sub OptimizeCode_Begin()

Application.ScreenUpdating = False

EventState = Application.EnableEvents
Application.EnableEvents = False

CalcState = Application.Calculation
Application.Calculation = xlCalculationManual

PageBreakState = ActiveSheet.DisplayPageBreaks
ActiveSheet.DisplayPageBreaks = False

End Sub

và đoạn code

Mã:
With Application

        .Calculation = xlCalculationManual
        .ScreenUpdating = False
        .EnableEvents = False
        .DisplayAlerts = False
        .Cursor = xlWait
        .EnableCancelKey = xlErrorHandler
   
 End With
 
Chào mọi người,
Mình có 2 đoạn code (tìm trên mạng) để tắt các chức năng không cần thiết, nhưng mình không biết gộp 2 code này với nhau. Mong mọi người giúp đỡ. Cám ơn mọi người rất nhiều.
Cái này bạn tra trên mạng từng chức năng và cách sử dụng là được và sẽ nhớ lâu, mà sao phải gộp 2 code để làm gì, chưa kể trong đó có những chức năng trùng nhau rồi, nên kiểm tra kỹ trước khi đưa lên hỏi thì tốt hơn bạn à.
 
Upvote 0
Cái này bạn tra trên mạng từng chức năng và cách sử dụng là được và sẽ nhớ lâu, mà sao phải gộp 2 code để làm gì, chưa kể trong đó có những chức năng trùng nhau rồi, nên kiểm tra kỹ trước khi đưa lên hỏi thì tốt hơn bạn à.
Cái code thứ hai là chỉnh sửa một số trạng thái của Application. Cái code thứ nhất có phần cẩn thận copy lại các trạng thái trước khi chỉnh sửa. Mục đích là code thứ nhất sẽ chỉnh sửa, sau khi chạy xong, trước lkhi thoát khỏi sub thì chỉnh lại như ban đầu (*1).
Hai code ấy có thể merge vào nhau được. Chỉ có vấn đề là code 2 chỉnh tất cả 6 trạng thái mà code 1 chỉ copy lại có 2 thôi. Theo đúng lệ thì chỉnh bao nhiêu phải copy đủ bao ấy.

Chỉnh cỡ 2-3 trạng thái thì làm như code trên. Chỉnh cỡ 6 thì người ta viết sub riêng.

Mã:
Sub BaMe()
ChinhTT
... code của sub
ChinhTT resetStates:=True
End Sub

Sub ChinhTT(optional resetStates As Boolean = False)
Static CalcState As Long
Static EventState As Boolean
Static ScreenState As Boolean
Static DisplState As Boolean
Static CursState As Long
Static CancState As Long
Static PageBreakState As Boolean

With Application
If resetStates Then ' reset to what they were before
        .Calculation = CalcState
        .ScreenUpdating = ScreenState
        .EnableEvents = EventState
        .DisplayAlerts = DisplState
        .Cursor = CursState
        .EnableCancelKey = CancState
        ActiveSheet.DisplayPageBreaks = PageBreakState
Else ' set to preferred states
        CalcState = .Calculation
        ScreenState = .ScreenUpdating
        EventState = .EnableEvents
        DisplState = .DisplayAlerts
        CursState = .Cursor
        CancState = .EnableCancelKey
        PageBreakState = ActiveSheet.DisplayPageBreaks
        ' savings done, start setting
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
        .EnableEvents = False
        .DisplayAlerts = False
        .Cursor = xlWait
        .EnableCancelKey = xlErrorHandler
        ActiveSheet.DisplayPageBreaks = True
End If
End With

End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom