Khi tìm hiểu về VBA chúng ta thường gặp một yêu cầu là phải khai báo biến. Vậy biến là gì? Tại sao lại phải khai báo biến? Cách khai báo biến thế nào cho đúng?… hãy cùng Học Excel Online trả lời các câu hỏi này nhé.
Biến là gì và tại sao cần khai báo biến
Biến là nơi để lưu trữ dữ liệu do người dùng thiết lập theo quy ước có sẵn, được sử dụng trong môi trường VBA giúp chương trình nhận dạng và hiểu đúng, thao tác đúng tới các dữ liệu này.
Tại sao cần khai báo biến?
Khi chúng ta muốn đưa 1 dữ liệu vào trong 1 macro (câu lệnh lập trình trong VBA) thì chúng ta phải thông qua các biến. Có rất nhiều loại biến tương ứng với những kiểu dữ liệu khác nhau. Khai báo biến giúp VBA làm việc chính xác hơn với kiểu dữ liệu của biến, tiết kiệm được tài nguyên, bộ nhớ của máy tính, dung lượng của chương trình.
Trong môi trường VBA có rất nhiều đối tượng. Các đối tượng có những phương thức, thuộc tính riêng. Tất cả đều biểu diễn dưới dạng ký tự. Do đó khi chúng ta cần phải khai báo để phân biệt biến với các đối tượng khác. Điều này giúp tránh được các xung đột có thể xảy ra khi chạy câu lệnh, đồng thời giúp người lập trình quản lý tốt hơn các câu lệnh của mình.
Các kiểu biến thường gặp và quy tắc đặt tên biến
Các bạn có thể tìm hiểu kỹ hơn nội dung này trong bài viết:
Hướng dẫn cách đặt tên biến và quản lý các biến trong môi trường VBA Excel
Cách khai báo biến trong VBA
Việc khai báo biến thường bao gồm các yêu cầu:
- Tên của biến: để nhận dạng, sử dụng
- Kiểu dữ liệu của biến: để xác định cấu trúc của dữ liệu, phạm vi bộ nhớ cần sử dụng cho biến
- Phạm vi hoạt động: dùng trong toàn bộ các module hay chỉ trong 1 module, hay chỉ trong 1 sub. Việc này thường ảnh hưởng khi muốn sử dụng biến cùng tên nhưng khác giá trị, hay cùng tên cùng giá trị. Đây cũng là từ khóa để bắt đầu việc khai báo biến
Cấu trúc của 1 lệnh khai báo biến:
[Phạm vi hoạt động] + [dấu cách] + [Tên biến] + [dấu cách] + [as] + [dấu cách] + [Kiểu dữ liệu của biến]
Ví dụ:
Dim i As Integer
- Dim: Phạm vi của biến mang tính chất cục bộ tại nơi đặt lệnh khai báo
- i: tên biến là chữ “i”
- As Integer: kiểu biến là kiểu Integer, trong đó từ khóa “As” có nghĩa là “gán cho“, “là“
Biến toàn cục và biến cục bộ
Các khái niệm này liên quan tới việc quy định phạm vi hoạt động của biến. Khi khai báo biến, chúng ta sử dụng các từ khóa khai báo phạm vi và kết hợp với vị trí đặt lệnh khai báo này. Cụ thể như sau:
- Biến toàn cục: Dùng chung được ở trong nhiều Sub/Function khác nhau mà chỉ cần khai báo duy nhất 1 lần. Biến toàn cục có thể mang tính chất toàn bộ Workbook hoặc chỉ trên 1 Project nhất định. Biến này không bị giải phóng khi kết thúc 1 sub/function.
- Biến cục bộ: Chỉ dùng trong 1 Sub/Function. Khi muốn dùng lại biến này thì phải khai báo lại. Biến này bị giải phóng khi kết thúc Sub/Function.
Để khai báo các biến là toàn cục hay cục bộ thì chúng ta sử dụng các từ khóa sau:
Từ khóa Public
- Khi khai báo biến với từ khóa Public thì biến đó có thể dùng được ở bất cứ đâu trong Workbook.
- Là dạng biến toàn cục khi xét trong toàn bộ môi trường VBA Project
- Khi khai báo biến ở phạm vi Public thì thường khai báo ở phần bắt đầu của 1 module (hay worksheet, userform…), nằm ngoài phạm vi các Sub
Ví dụ: Public DongCuoi As Long = Khai báo biến DongCuoi là kiểu Long, phạm vi toàn cục
Từ khóa Private
- Là dạng biến toàn cục khi xét tại nơi đặt lệnh khai báo, nhưng xét trên toàn bộ môi trường VBA Project thì là biến cục bộ.
- Khi khai báo biến bằng Private bên trong 1 Sub hay Function thì nó là biến cục bộ. Khi khai báo biến ở bên ngoài Sub/Function và ở trên cùng của Module (hay trong Userform/Class module/Worksheet/workbook) thì nó là biến toàn cục trong Project có chứa khai báo đó
Ví dụ: Private homnay As Date = Khai báo biến homnay là kiểu Date
Từ khóa Dim
- Là từ khóa khai báo biên thông dụng nhất, hay gặp nhất.
- Khi khai báo biến bằng Dim bên trong 1 Sub hay Function thì nó là biến cục bộ. Khi khai báo biến ở bên ngoài Sub/Function và ở trên cùng của Module (hay trong Userform/Class module/Worksheet/workbook) thì nó là biến toàn cục trong Project có chứa khai báo đó
Ví dụ: Dim i As Integer
Từ khóa Static
- Dùng để khai báo biến bên trong 1 sub / function
- Dùng để khai báo biến cục bộ. Không áp dụng cho biến toàn cục.
Ví dụ: Static i as Long
Tham khảo:
Ví dụ đơn giản về biến số và thuật toán trong VBA
Những quy tắc vàng khi làm việc trên VBA