Hàm VarType

vbano1

SMod
Thành viên BQT
Cấu trúc:

Mã:
 VarType(varname)
Diễn giải:

Tùy thuộc vào kiểu dữ liệu của tham số đầu vào varname mà hàm VarType sẽ cho các kết quả khác nhau.
Hằng sốGiá trị trả về của hàm VarTypeNội dung
vbEmpty
0​
Empty (Rỗng)
vbNull
1​
Null (không tồn tại)
vbInteger
2​
Kiểu số nguyên integer
vbLong
3​
Kiểu số nguyên Long
vbSingle
4​
Kiểu số thực single
vbDouble
5​
Kiểu số thực Double
vbCurrency
6​
Kiểu số tiền tệ
vbDate
7​
Kiểu dữ liệu ngày tháng
vbString
8​
Chuỗi ký tự
vbObject
9​
Object
vbError
10​
Giá trị Error
vbBoolean
11​
Kiểu True/False
vbVariant
12​
Kiểu Variant
vbDataObject
13​
Đối tượng tự động hóa không phải OLE
vbDecimal
14​
Hệ cơ số 10
vbByte
17​
Kiểu Byte
vbArray
8204​
Kiểu mảng
Người dùng không thể định nghĩa kiểu dữ liệu cho varname, mà chương trình sẽ tự động phán đoán. Do đó khai báo cho varname, các bạn hãy khai báo là Variant (kiểu dữ liệu gì cũng được), việc còn lại chương trình sẽ tự động phán đoán.

Ví dụ:

Mã:
Sub Sample()

    Dim var As Variant

    var = "ABC"

    MsgBox VarType(var)         'Cho ket qua la 8, tuc la string

    var = 123

    MsgBox VarType(var)         'Cho ket qua la 2, tuc la integẻ

    var = 123.456

    MsgBox VarType(var)         'Cho ket qua la 5, tuc la Double

    var = Array("A", "B", "C")

    MsgBox VarType(var)         'Cho ket qua la 8204, tuc la mảng

End Sub
Nguồn tham khảo:
 

tuhocvba

Administrator
Thành viên BQT
Như rất nhiều bài viết đã nói, việc chỉ định kiểu dữ liệu là không cần thiết. Tức là không chỉ định rõ ràng kiểu dữ liệu, thì chương trình vẫn thực thi được, lúc này nó hiểu kiểu biến ấy là Variant. Ví dụ:
Mã:
Dim i
Việc nhớ cá kiểu dữ liệu đối với người mới học là việc chưa cần thiết. Tuy nhiên trong khả năng thì nhớ vẫn là tốt.
Bên cạnh đó, tôi muốn giới thiệu các bạn kiểu khai báo ký tự. Tại sao chúng ta cần biết, vì nhiều khi tra cứu trên internet, chúng ta tìm thấy các chương trình khai báo kiểu này, nếu không biết thì chúng ta sẽ không hiểu họ đang viết cái gì.
Cụ thể hãy xem chương trình sau:
Mã:
Sub vidu()
Dim i%
Khi nhìn thấy khai báo như thế này, chúng ta không hiểu kiểu khai báo biến i này là như thế nào.
Áp dụng hàm VarTpe, tôi sẽ sửa lại như sau:
Mã:
Sub vidu()
    Dim i%
    MsgBox VarType(i)
End Sub
Chúng ta thấy hiện ra thông báo là 2. Tức là đây là kiểu biến Integer.
Cụ thể chúng ta có bảng sau:
Kiểu khai báo ký tựKiểu dữ liệu
%Integer
&Long
$String
!Single
#Double
@Currency
^Longlong (Excel 64 bit)
 
Nếu chỉ hiển thị là 0, 1,2,... như thế này thật là khó khăn. Vậy tôi xin phép xây dựng hàm riêng:
Mã:
Sub test()
    Dim arr
    arr = Split("a@a@a@a", "@")
    Call myvartype(arr)
End Sub
Sub myvartype(ByVal x)
    Dim noidung As String
    Dim i       As Integer
    i = VarType(x)
    Select Case i
    Case 0
        noidung = "Empty (uninitialized)"
    Case 1
        noidung = "Null (no valid data)"
    Case 2
        noidung = "Integer"
    Case 3
        noidung = "Long integer"
    Case 4
        noidung = "Single-precision floating-point number"
    Case 5
        noidung = "Double-precision floating-point number"
    Case 6
        noidung = "Currency value"
    Case 7
        noidung = "Date value"
    Case 8
        noidung = "String"
    Case 9
        noidung = "Object"
    Case 10
        noidung = "Error value"
    Case 11
        noidung = "Boolean value"
    Case 12
        noidung = "Variant (used only with arrays of variants)"
    Case 13
        noidung = "A data access object"
    Case 14
        noidung = "Decimal value"
    Case 17
        noidung = "Byte value"
    Case 20
        noidung = "LongLong integer (valid on 64-bit platforms only)"
    Case 36
        noidung = "Variants that contain user-defined types"
    Case 8192
        noidung = "Array (always added to another constant when returned by this function)"
    Case 8204, 8200
        noidung = "Array"
    Case Else
        noidung = CStr(i)
    End Select
    MsgBox noidung
End Sub
 
Top