Code VBA nhanh, code VBA đẹp – kì 1
Bạn đã biết chút ít VBA, đã viết được những đoạn code đầu tiên, và tự động hoá được công việc của mình giúp tiêt kiệm được nhiều giờ làm việc. Cho đến 1 khi lượng công việc bạn giải quyết được nhiều hơn, bạn đã viết được những code VBA phức tạp hơn, tuy nhiên 1 ngày nọ, code của bạn có thể rất ...
Bạn đã biết chút ít VBA, đã viết được những đoạn code đầu tiên, và tự động hoá được công việc của mình giúp tiêt kiệm được nhiều giờ làm việc. Cho đến 1 khi lượng công việc bạn giải quyết được nhiều hơn, bạn đã viết được những code VBA phức tạp hơn, tuy nhiên 1 ngày nọ, code của bạn có thể rất chậm, chậm đến mức bạn bực mình khó chịu. Để bớt bực mình khó chịu, hãy đọc bài này và áp dụng. Nếu bạn còn chưa biết VBA là gì, hãy đăng ký ngay khoá học VBA của Thanh và sau đó đảm bảo năng suất lao động của bạn sẽ tăng lên 200% khi xử lý những công việc lặp đi lặp lại từ làm báo cáo quản trị, tới cập nhật số liệu và rất nhiều công việc khác. Sau đây là một số lưu ý nhỏ để các bạn có thể tăng tốc cho code VBA của mình.
1. Dừng cập nhật, refresh màn hình
Hiện tượng màn hình Excel hoặc các phần mềm office khác chớp nháy khi code VBA chạy là do tính năng refresh màn hình được kích hoạt, để tắt tính năng refresh màn hình này cũng đồng thời làm code VBA chạy nhanh hơn, chúng ta code như sau:
Sub NoScreenRefresh()
Application.ScreenUpdating = False
' Viết các code VBA khác vào giữa ở đây
Application.ScreenUpdating = True
End Sub
2. Dừng tính toán khi đang thực thi code
Sub NoCalculations()
Application.Calculation = xlCalculationManual
' Viết các code VBA khác vào giữa ở đây
Application.Calculation = xlCalculationAutomatic
End Sub
3. Tạm thời bỏ qua sự kiện worksheet và workbook
Sub StopAllEvents()
Application.EnableEvents = False
' Viết các code VBA khác vào giữa ở đây
Application.EnableEvents = True
End Sub
4. Sử dụng With khi làm việc với Object
Sub WithARange()
With Range("A1")
.Value = 100
.Font.Bold = True
.Interior.ColorIndex = 6
.Copy Destination:=Range("B1")
End With
End Sub
5. Xoá text bằng vbNullString thay vì “”
Sub EmptyText()
Dim strWords As String
strWords = "Cats"
MsgBox strWords
strWords = vbNullString
MsgBox strWords
End Sub
6. Điền công thức trực tiếp vào 1 vùng thay vì việc sử dụng method copy hay Filldown
Sub NoAutoFillOrCopy()
Range("A1:A200").FormulaR1C1 = "=SUM(RC[1]:RC[5])"
End Sub
7. Hạn chế copy, paste khi có thể
Thay vì:
Sheet1.Range("A1:A200").Copy
Sheet2.Range("B1").pasteSpecial
Application.CutCopyMode=False 'xoá Clipboard
Hãy dùng:
Sheet1.Range("A1:A200").Copy Destination:=Sheet2.Range("B1")
hoặc:
Sheet2.Range("B1:B200").Formula = Sheet1.Range("A1:A200").Formula
Thay vì:
Sheet1.Range("A1:A200").Copy
Sheet1.Range("A1:A200").PasteSpecial xlPasteValues
Application.CutCopyMode=False'Clear Clipboard
Hãy dùng:
Sheet1.Range("A1:A200") = Sheet1.Range("A1:A200").Value
8. Bỏ cập nhật ở StatusBar trên Excel:
Application.DisplayStatusBar = False
' Code VBA
Application.DisplayStatusBar = TRUE
9. Ẩn Page Breaks
Activesheet.DisplayPageBreaks = False
' Code VBA
Activesheet.DisplayPageBreaks = True
10. Tạm dừng việc cập nhật bảng Pivot
ActiveSheet.PivotTables(“PivotTable1”).ManualUpdate=True
' Code VBA
ActiveSheet.PivotTables(“PivotTable1”).ManualUpdate=False
11. Không dùng method .Select
Code VBA được ghi lại bằng Macro Record cực kỳ hay có method .select sẽ làm code chậm đi rất nhiều, vì vậy hãy rút gọn .select để code VBA nhanh hơn
Thay vì:
Sheets(“Sheet1”).Select
Range(“A1”).Select
ActiveCell.FormulaR1C1 = “1000”
Sheets(“Sheet2”).Select
Range(“A1”).Select
ActiveCell.FormulaR1C1 = “1000”
Sheets(“Sheet3”).Select
Range(“A1”).Select
ActiveCell.FormulaR1C1 = “1000”
Hãy dùng:
Sheets(“Sheet1”).Range(“A1”).FormulaR1C1 = “1000”
Sheets(“Sheet2”).Range(“A1”).FormulaR1C1 = “1000”
Sheets(“Sheet3”).Range(“A1”).FormulaR1C1 = “1000”
Đón xem kì tới: Muốn nhanh đừng dùng vòng lặp