Tin tức mới

VBA variant type variable

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

Leave a Reply

Your email address will not be published. Required fields are marked *