1. Variant là gì
Variant là kiểu dữ liệu “đa năng” — nó có thể chứa bất kỳ kiểu nào:
Số
Chuỗi
Ngày
Object
Thậm chí cả Empty, Null, Error
👉 Vì vậy nó rất tiện… nhưng cũng rất nguy hiểm nếu dùng bừa.
2. Khi nào NÊN dùng Variant
1. Làm việc với Range
Range.Value trả về mảng → phải dùng Variant
Dim data As Variant
data = Range("A1:C10").Value
2. Khi không biết trước kiểu dữ liệu
Dim inputValue As Variant
inputValue = InputBox("Nhập gì cũng được")
3. Duyệt mảng / collection
Dim item As Variant
For Each item In Array(1, 2, 3)
3. Không nên lạm dụng Variant
1. Tốn bộ nhớ hơn
Variant dùng nhiều bộ nhớ hơn (16 bytes trở lên)
Với dữ liệu lớn (loop hàng nghìn dòng) → chậm thấy rõ
Dim a As Integer ' nhẹ
Dim b As Variant ' nặng hơn nhiều
2. Giảm hiệu năng (performance)
Dim i As Variant
For i = 1 To 100000
👉 VBA phải:
Kiểm tra kiểu dữ liệu liên tục
Ép kiểu ngầm (type conversion)
→ Chậm hơn so với:
Dim i As Long
3. Dễ gây lỗi khó debug
Dim x As Variant
x = "123"
Debug.Print x + 1 ' vẫn chạy (do VBA tự convert)
4. Mất kiểm soát kiểu dữ liệu
Dim value As Variant
value = 100
value = "hello"
value = Now
👉 Một biến mà:
Lúc là số
Lúc là string
Lúc là date
→ Code trở nên khó hiểu, khó bảo trì
4. Best Practice
Luôn ưu tiên kiểu cụ thể
Ví dụ tham khảo:
| Trường hợp | Nên dùng |
|---|---|
| Số đếm | Long |
| Tiền | Double |
| Text | String |
| True/False | Boolean |
Chỉ dùng Variant khi cần thiết
👉 Quy tắc đơn giản:
Nếu bạn biết kiểu dữ liệu → KHÔNG dùng Variant
Luôn bật Option Explicit
Option Explicit
👉 Giúp tránh:
Biến bị ngầm thành Variant
Lỗi typo


VBA – InputBox31-03-2026 17:14
VBA – Message Box (MsgBox)31-03-2026 15:01
Cách viết comment (chú thích) trong VBA31-03-2026 13:46