- Tham gia
- 30/5/06
- Bài viết
- 1,798
- Được thích
- 4,706
- Giới tính
- Nam
1. Tắt các chế độ cập nhật màn hình và các chế độ khác để tăng tốc thực hiện code
Nguồn từ đây.
Cách dùng:
Xin xem ví dụ FillSlow và FillFast ở trên.
Bạn sẽ gọi thủ tục để tăng tốc khi thực hiện các đoạn mã bằng cách gọi thủ tục SpeedOn và gọi lại thủ tục SpeedOff mỗi khi bạn đã hoàn tất.
Chú ý:
Nếu các đoạn mã của bạn có sử dụng kết quả tính toán của một công thức, thì bạn nên xem xét hoặc chỉnh sửa các thủ tục ở trên cho phù hợp với công việc của mình.
Lê Văn Duyệt
Mã:
Option Explicit
Public glb_origCalculationMode As Integer
Sub [B][COLOR="Red"]SpeedOn[/COLOR][/B](Optional StatusBarMsg As String = "Running macro...")
' [U]Chú ý[/U]: [COLOR="blue"]ở đây các bạn có thể thay đổi thông báo [/COLOR]
' [COLOR="blue"]bằng cách truyền vào chuổi UNICODE vào biến StatusBarMsg[/COLOR]
glb_origCalculationMode = Application.Calculation
With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
.Cursor = xlWait
.StatusBar = StatusBarMsg
.EnableCancelKey = xlErrorHandler
End With
End Sub
Sub [B][COLOR="Red"]SpeedOff[/COLOR][/B]()
With Application
.Calculation = glb_origCalculationMode
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.CalculateBeforeSave = True
.Cursor = xlDefault
.StatusBar = False
.EnableCancelKey = xlInterrupt
End With
End Sub
Sub [COLOR="Blue"][B]FillSlow[/B][/COLOR]()
Dim c As Range, r As Range, startTime, EndTime
Set r = Range("A1:C1000")
r.ClearContents
startTime = Timer
For Each c In r
c.Select
c.Formula = "=Row()*Column()"
Next c
DoEvents
EndTime = Timer
MsgBox "Total Time: " & EndTime - startTime
[A1].Select
End Sub
Sub [B][COLOR="Blue"]FillFast[/COLOR][/B]()
Dim c As Range, r As Range, startTime, EndTime
Set r = Range("A1:C1000")
r.ClearContents
startTime = Timer
On Error Goto ResetSpeed
SpeedOn
For Each c In r
c.Select
c.Formula = "=Row()*Column()"
Next c
DoEvents
EndTime = Timer
MsgBox "Total Time: " & EndTime - startTime
[A1].Select
ResetSpeed:
SpeedOff
End Sub
Nguồn từ đây.
Cách dùng:
Xin xem ví dụ FillSlow và FillFast ở trên.
Bạn sẽ gọi thủ tục để tăng tốc khi thực hiện các đoạn mã bằng cách gọi thủ tục SpeedOn và gọi lại thủ tục SpeedOff mỗi khi bạn đã hoàn tất.
Chú ý:
Nếu các đoạn mã của bạn có sử dụng kết quả tính toán của một công thức, thì bạn nên xem xét hoặc chỉnh sửa các thủ tục ở trên cho phù hợp với công việc của mình.
Lê Văn Duyệt
Lần chỉnh sửa cuối: