Bài 7.6. Hàm chuyển đổi kiểu dữ liệu (1 người xem)

  • Thread starter Thread starter befaint
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

befaint

|||||||||||||
Tham gia
6/1/11
Bài viết
14,581
Được thích
19,782
(Danh mục các hàm trong VBA)

6. Hàm chuyển đổi kiểu dữ liệu

6.1. CBOOL
PHP:
CBool(Expression) 'As Boolean'
Chuyển giá trị về kiểu dữ liệu Boolean.
PHP:
Sub CBOOL_Fn()
    Dim bValue As Boolean
    bValue = CBool(2 = 5)
    MsgBox bValue  'False'
End Sub
6.2. CBYTE
PHP:
CByte(Expression) 'As Byte'
Chuyển giá trị về kiểu dữ liệu Byte (0-255).
PHP:
Sub CBYTE_Fn()
    Dim bValue As Byte
    bValue = CByte(12.5)
    MsgBox bValue   'Result: 12'
End Sub
6.3. CCUR
PHP:
CCur(Expression) 'As Currency'
Chuyển giá trị về kiểu dữ liệu Currency.
PHP:
Sub CCUR_Fn()
    Dim cValue As Currency, sValue As String
    sValue = "1054.548"
    cValue = CCur(sValue)
    MsgBox cValue   'Result: 1054.548'
End Sub
6.4. CDATE
PHP:
CDate(Expression) 'As Date'
Chuyển giá trị về kiểu dữ liệu Date.
PHP:
Sub CDATE_Fn()
    Dim dValue As Variant, sValue As String
    sValue = "20/08/2017"
    dValue = CDate(sValue)
    MsgBox TypeName(dValue) & ":    " & dValue
End Sub
6.5. CDBL
PHP:
CDbl(Expression) 'As Double'
Chuyển giá trị về kiểu dữ liệu Double.
PHP:
Sub CDBL_Fn()
    Dim dValue As Double, sValue As String
    sValue = "6542.85"
    dValue = CDbl(sValue)
    MsgBox dValue
End Sub
6.6. CDEC
PHP:
CDbl(Expression) 'As Decimal'
Chuyển giá trị về kiểu dữ liệu Decimal
PHP:
Sub CDEC_Fn()
    Dim dValue As Variant, sValue As String
    sValue = "12578955466522145578855.674"
    dValue = CDec(sValue)
    MsgBox TypeName(dValue) & ":  " & dValue
End Sub
6.7. CINT
PHP:
CInt(Expression) 'As Integer'
Chuyển giá trị về kiểu dữ liệu Integer
PHP:
Sub CINT_Fn()
    Dim intValue As Variant, sValue As String
    sValue = "548.6"
    intValue = CInt(sValue)
    MsgBox TypeName(intValue) & ":  " & intValue  '549'
End Sub
6.8. CLNG
PHP:
CLng(Expression) 'As Long'
Chuyển giá trị về kiểu dữ liệu Long
PHP:
Sub CLNG_Fn()
    Dim lValue As Variant, sValue As String
    sValue = "25478.146"
    lValue = CLng(sValue)
    MsgBox TypeName(lValue) & ":  " & lValue '25478'
End Sub
6.9. CSNG
PHP:
CSng(Expression) 'As Single'
Chuyển giá trị về kiểu dữ liệu Single
PHP:
Sub CSNG_Fn()
    Dim snValue As Variant, sValue As String
    sValue = "5348.26"
    snValue = CSng(sValue)
    MsgBox TypeName(snValue) & ":  " & snValue  '5348.26'
End Sub
6.10. CSTR
PHP:
CStr(Expression) 'As String'
Chuyển giá trị về kiểu dữ liệu String
PHP:
Sub CSTR_Fn()
    Dim StrValue As Variant, lValue As Long
    lValue = 1054
    StrValue = CStr(lValue)
    MsgBox TypeName(StrValue) & ":  " & StrValue 'Result: "1054"
End Sub
6.11. CVAR
PHP:
CVar(Expression)'
Chuyển giá trị về kiểu dữ liệu đưa vào.
PHP:
Sub CVAR_Fn()
    Dim varValue As Variant, lValue As Long
    lValue = 4928
    varValue = CVar(lValue)
    MsgBox TypeName(varValue)
End Sub
 
Giải thích chi tiết hoạt động và cho biết trường hợp cần dùng các hàm này.
Ví dụ CStr
a = CStr(x) có tương đương với a = x & "" hay không?
Lúc nào cần dùng CStr? (ví dụ cần so sánh 2 Variants?)
 
Upvote 0
a = CStr(x) có tương đương với a = x & "" hay không?
Em thử ví dụ sau:
PHP:
Sub vidu1()
    Dim x As Long
    x = 10
    MsgBox TypeName(CStr(x))    ''String
    MsgBox TypeName("" & x)     ''String
    MsgBox TypeName(x & "")      ''String
End Sub
- Kết quả: Tương đương.
- Dùng hàm nối chuỗi "&" để ép kiểu dữ liệu trả về chắc có ảnh hưởng tới tốc độ ạ?
Lúc nào cần dùng CStr? (ví dụ cần so sánh 2 Variants?)
Em chưa nghĩ ra ví dụ nào đặc biệt ngoài ví dụ Add Key vào Dictionary (Key là chuỗi thì tốc độ nhanh hơn).
 
Upvote 0
Em chưa nghĩ ra ví dụ nào đặc biệt ngoài ví dụ Add Key vào Dictionary (Key là chuỗi thì tốc độ nhanh hơn).

Theo toi nhớ thì tôi có đưa ra một kiểu test cho thấy chuỗi đâu có nhanh hơn.
Nhưng mà tôi khong muốn phí thời giờ vào cái chuyện tiêu chuẩn test ở đây.
Nguyên tắc vẫn là nếu bạn muốn dùng Dictionary thì nên biết rằng khả năng key đủ kiểu là một trong những đặc tính quan trọng của nó. Nói cách khác, "1" và 1 là hai key khác nhau. Trói buộc mình vào cái câu "key chuỗi nhanh hơn" là tự loại đi một ưu điểm quan trọng của Dictionary.

Trở lại hàm CStr. Cái quan trọng của hàm này là những trường hợp collection có hai cách truy vấn phần tử. Ví dụ với WorkSheets, hàm này bảo đảm bạn truy vấn theo tên thay vì chỉ số:
Set mySheet = WorkSheet(CStr([a1])) ' nếu trị trong ô a1 là 123 thì có sự khác biệt giữa sheet tên "123" và sheet thứ 123

(tương tự như vậy, hàm Int bảo đảm ta ta truy vấn theo chỉ số)
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom