Thủ thuật nhằm tăng tốc chương trình (2 người xem)

Liên hệ QC

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

handung107

Thành viên gắn bó
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,630
Được thích
17,442
Nghề nghiệp
Bác sĩ
1/ Tăng tốc và không cho màn hình nhấp nháy (flickering):

Sub NoScreenRePainting()
Application.ScreenUpdating=False
'Dat code cua ban o day
Application.ScreenUpdating=True
End Sub


2/ Ngăn chặn việc tính toán trong khi thi hành mã:

Sub NoCalculations()
Application.Calculation = xlCalculationManual
'Dat code cua ban o day
Application.Calculation = xlCalculationAutomatic
End Sub


3/ Tăng tốc nếu bạn có Events của Worksheet hay Workbook:

Sub StopAllEvents()
Application.EnableEvents = False
'Dat code cua ban o day
Application.EnableEvents = True
End Sub


4/ Sử dụng khai báo With khi làm việc với các đối tượng:

Sub WithARange()
With Range("A1")
.Value = 100
.Font.Bold = True
.Interior.ColorIndex = 6
.Copy Destination:=Range("B1")
End With
End Sub


5/ Sử dụng VbNullString thay vì dùng = ""

Sub EmptyText()
Dim strWords As String
strWords = "Cats"
MsgBox strWords
strWords = vbNullString
MsgBox strWords
End Sub


6/ Đưa vào công thức tương đối vào nhiều ô (a range of cells):

Nhanh hơn là AutoFill hay Copy.

Sub NoAutoFillOrCopy()
Range("A1:A200").FormulaR1C1 = "=SUM(RC[1]:RC[5])"
End Sub


7/ Tránh sử dụng Copy và Paste bất cứ khi nào có thể:

Sub NoCopyAndPaste()

'Thay vi:
Sheet1.Range("A1:A200").Copy Destination:=Sheet2.Range("B1")

'Thi su dung:

Sheet2.Range("B1:B200").Value= Sheet1.Range("A1:A200").Value

'Hay:
Sheet2.Range("B1:B200").Formula = Sheet1.Range("A1:A200").Formula

'Thay vi:
Sheet1.Range("A1:A200").Copy
Sheet1.Range("A1:A200").PasteSpecial xlPasteValues


'Thi su dung:
Sheet1.Range("A1:A200") = Sheet1.Range("A1:A200").Value
End Sub

Luôn luôn khai báo biến đúng!

Để xem nhanh các biến đã định nghĩa:

- Chọn biến mà bạn muốn định nghĩa.
Bạn vào View>Definition (Shift+F2)

- Để trở về vị trí trước:
Bạn vào View>Last Postition (Ctrl+Shift+F2).


8/ Trả lại bộ nhớ từ biến Object :

Sub ReleaseObjectMemory()
'Co the la bat ky bien Object nao
Dim wSheet as Worksheet
'Dat bien Object
Set wSheet = Sheet1
'Dat code cua ban o day
'Giai phong bo nho
Set wSheet = Nothing
End Sub


9/ Tránh sử dụng If, Else bất cứ khi nào có thể

Thông thường người ta sử dụng cấu trúc If, Else để kiểm tra điều kiện đúng hay sai. Tuy vậy có một phương thức nhanh hơn "một tí". Hai ví dụ sau đây, ví dụ đầu sử dụng phương thức thường sử dụng, ví dụ hai sử dụng phương thức nhanh hơn. Và dĩ nhiên đối với những ví dụ nhỏ thì thường sự khác nhau không lớn lắm.

Sub TrueOrFalseSlower()
Dim bYesNo As Boolean
Dim i As Integer
If i = 5 Then
bYesNo = True
Else
bYesNo = False
End If
MsgBox bYesNo
End Sub

Và đây là cách tốt hơn

Sub TrueOrFalseFaster()
Dim bYesNo As Boolean
Dim i As Integer
bYesNo = (i = 25)
MsgBox bYesNo
End Sub

Tương tự như vậy cách chung để chuyển đổi biến giữa True và False phụ thuộc vào các điều kiện, ta có thể làm theo cách tốt hơn như sau:

Cách thông thường:

Sub ToggleTrueOrFalseSlower()
Dim bYesNo As Boolean
If bYesNo = False Then
bYesNo = True
Else
bYesNo = False
End If
MsgBox bYesNo
End Sub

Đây là cách tốt hơn
Sub ToggleTrueOrFalseFaster()
Dim bYesNo As Boolean
bYesNo = Not bYesNo
MsgBox bYesNo
End Sub
Lược dịch từ internet.

Mọi ý kiến của các bạn xin gởi cho tôi theo địa chỉ email sau:

levanduyet@yahoo.com
 
Bạn muốn tăng tốc độ của VBA? Hãy chú ý đến từng dòng code, cách thức lập trình, cách đặt biến số, cách sử dụng các hàm, thủ tục, cách viết query, cách sử dụng APIs, cách sử dụng các toán tử, v.v...

Xin giới thiệu với các bạn 19 trang sách nói về vấn đề đó:

Office - Vba Code Optimization.pdf

Happy coding!


(Trích bài của anh StonyHeartedMan)


17 Bước để viết code VBA tốt hơn


Viết code thì dễ, nhưng viết code tốt thì lại khó. Vậy, thế nào là viết code tốt? Thông thường, chúng tôi cho rằng code tốt là phải đảm bảo những yếu tố sau:

1. Code phải hoạt động (không có lỗi)
2. Code phải được tài liệu hóa
3. Code phải bảo trì được
4. Code là phải chạy nhanh

Tuy nhiên, để đáp ứng được các mục tiêu trên thì thường là khá tốn thời gian và khó để đạt được. Để hỗ trợ chúng ta trong việc viết code, công ty FSM đã tập hợp lại thành danh sách những thứ mà họ sử dụng hàng ngày - đó là các kỹ thuật, tips sẽ hỗ trợ cho chúng ta trong việc viết code dễ dàng hơn tiến tới việc code được bảo trì tốt hơn....

Vậy, 17 bước để có code "đẹp" đó là gì? Xin mời các bạn đọc:


Programming - 17 Steps To Better Vba Code

(Trích bài của anh StonyHeartedMan)
 
Web KT

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

Back
Top Bottom