Những quy tắc vàng khi làm việc trên VBA

Chia sẻ bài viết này:
  • 69
  •  
  •  
  •  
  •  
  •  
  •   
  •   

VBA giúp chúng ta rất nhiều trong công việc, tuy nhiên để làm việc trên đó chúng ta cần có những yêu cầu khắt khe hơn, giúp kiểm soát các câu lệnh và tránh các lỗi có thể xảy ra. Công việc càng phức tạp, sử dụng càng nhiều VBA thì càng có nhiều khả năng chúng ta vấp phải các lỗi. Nếu không dựa trên những quy tắc làm việc nhất định thì sẽ rất khó khăn cho chúng ta khi phải tìm kiếm, sửa lỗi mà không biết nên bắt đầu từ đâu.

Một số quy tắc vàng cần nhớ như sau:

Quy tắc số 1. Luôn sử dụng câu lệnh “Option Explicit” trước khi bắt đầu viết bất kỳ dòng lệnh nào trong VBA. Việc này giúp tránh các lỗi có liên quan tới các biến được sử dụng trong VBA trước khi câu lệnh được thực hiện => Câu lệnh chỉ hoạt động khi tất cả các biến được sử dụng đều đã được khai báo và kiểm soát được.

Xem thêm ở bài viết: Tìm hiểu về biến trong VBA

Quy tắc số 2. Các Sub / Function cần được chia thành các đoạn nhỏ, riêng biệt và dễ nhớ để có thể gọi (call Macro) hoặc chạy (run Macro) khi cần thiết.

Ví dụ: 1 câu lệnh giúp Lưu trữ + Sắp xếp dữ liệu sau khi lưu thì nên tách ra thành 2 câu lệnh riêng biệt và được gọi ra theo thứ tự sẽ tốt hơn là viết chung trong 1 câu lệnh. Vì chúng ta có thể kiểm soát được từng đoạn việc nhỏ tốt hơn là trên 1 đoạn việc lớn.

Quy tắc số 3: Tạo ra các Function thường sử dụng để có thể gọi ra khi cần thiết

Ví dụ: câu lệnh tìm dòng cuối có chứa dữ liệu trong VBA thường xuyên được sử dụng. Thay vì mỗi lần sử dụng đều phải viết lại câu lệnh đó thì chúng ta có thể viết sẵn 1 function cho việc này, như vậy khi cần sử dụng đến sẽ nhanh hơn và dễ nhớ hơn.

Quy tắc số 4: Các thủ tục (Sub) có liên quan đến nhau thì nên để chung trong một module để dễ nhớ, dễ gọi và Excel sẽ ưu tiên chạy các sub trong cùng 1 module hơn

Quy tắc số 5: Sử dụng tên Sheet là tên quy ước trong VBA, vì tên sheet trong SheetTab có thể thay đổi dễ dàng hơn SheetName trong VBA

Nên sử dụng tên Sheet trong phần khung màu đỏ. Tên này chỉ thay đổi được trong VBA và được sử dụng thống nhất trong VBA

Vùng kẻ khung màu xanh là tên Sheet trong mục Sheet Tab bên ngoài ứng dụng Excel. Tên này có thể thay đổi bằng chức năng Rename trong SheetTab nên không ổn định, dễ khiến câu lệnh xảy ra lỗi.

Quy tắc số 6: Tránh sử dụng Loops. Có thể sử dụng các giải pháp thay thế nhanh hơn như Find, AutoFilter, AdvancedFilter, SpecialCells…

Quy tắc số 7: Loops thông qua Object collections là nhanh nhất so với qua các kiểu vòng lặp khác.

Quy tắc số 8: Tránh các Macro liên quan tới việc Delete Row/Column/Cell. Nên thay thế bằng chức năng Auto Filter, AdvancedFilter hoặc Sort sẽ tốt hơn.

Việc xóa sẽ làm mất các tọa độ tham chiếu của các hàm trong excel khiến hàm không chạy được, hoặc các vùng tham chiếu khác trong VBA không tự động thay đổi theo việc Delete đó khiến kết quả bị sai lệch

Quy tắc số 9: Nên tắt chức năng tự động tính toán (Auto Calculations) trong Excel trước khi chạy code để tránh Code bị chậm (đưa về dạng Manual Calculation). Sau khi hoàn tất câu lệnh sẽ trả về trạng thái Auto Calculation => Giúp tăng tốc độ chạy câu lệnh Macro.

Quy tắc số 10: Nên tắt chức năng cập nhật màn hình (Application.ScreenUpdating = False) trước khi chạy code để tránh việc màn hình bị nhấp nháy (do cập nhật màn hình khi chạy lệnh trong VBA). Sau khi câu lệnh hoàn thành sẽ trả về trạng thái cập nhật màn hình (Application.ScreenUpdating = True)

Sub Test()

Application.ScreenUpdating = False

… (nội dung câu lệnh)

Application.ScreenUpdating = True

End Sub

VBA giúp ích rất nhiều trong công việc: giúp bạn tăng tốc trong quá trình xử lý trên Excel, giúp lập các báo cáo tự động, điều khiển các chương trình khác như Word, Power Point, Outlook … giúp biến file Excel của bạn trở thành 1 phần mềm chuyên nghiệp …

Để có thể học VBA một cách đầy đủ, có hệ thống, bạn hãy tham gia khoá học VBA101 – VBA cơ bản dành cho người mới bắt đầu của hệ thống Học Excel Online. Hiện nay hệ thống đang có nhiều ưu đãi khi bạn đăng ký khóa học này. Chi tiết xem tại:


Chia sẻ bài viết này:
  • 69
  •  
  •  
  •  
  •  
  •  
  •   
  •