每個函數都可以將表達式 (表達式:算術或邏輯運算符、常數、函數和字段名稱、控件和屬性的任意組合,計算結果爲單個值。表達式可執行計算、操作字符或測試數據。)強制轉換爲特定的數據類型 (數據類型:決定字段可擁有的數據類型的字段特徵。數據類型包括 Boolean、Integer、Long、Currency、Single、Double、Date、String 和 Variant(默認)。)。
語法
CBool(expression)
CByte(expression)
CCur(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CSng(expression)
CStr(expression)
CVar(expression)
必選的 expression 參數 (參數:爲操作、事件、方法、屬性、函數或過程提供信息的值。)可以爲任何字符串表達式 (字符串表達式:任一求值爲一列連續字符的表達式。表達式的元素可以是:返回字符串或字符串 Variant (VarType 8) 的函數;字符串字面值、常量、變量或 Variant。)或數值表達式 (數字表達式:計算結果爲數字的任何表達式。表達式可以是變量、常數、函數和運算符的任意組合。)。
返回類型
函數名稱決定返回類型,如下所示:
函數 返回類型 expression 參數的範圍
CBool Boolean 任何有效的字符串或數值表達式。
CByte Byte 0 到 255。
CCur Currency -922,337,203,685,477.5808 到 922,337,203,685,477.5807。
CDate Date 任何有效的日期表達式。
CDbl Double 對於負值,-1.79769313486231E308 到
-4.94065645841247E-324;對於正值,4.94065645841247E-324 到 1.79769313486232E308。
CDec Decimal 對於整數(即沒有小數的數字),+/-79,228,162,514,264,337,593,543,950,335。對於具有 28 位小數的數字,值域範圍是
+/-7.9228162514264337593543950335。可能的最小非零數字爲 0.0000000000000000000000000001。
CInt Integer -32,768 到 32,767;小數部分被四捨五入。
CLng Long -2,147,483,648 到 2,147,483,647;小數部分被四捨五入。
CSng Single 對於負值,-3.402823E38 到 -1.401298E-45;對於正值,1.401298E-45 到 3.402823E38。
CStr String CStr 的返回值取決於 expression 參數。
CVar Variant 對於數字,與雙精度型的值域範圍相同。對於非數字值,與 String 的值域範圍相同。
註解
如果傳遞給該函數的 expression 位於要轉換爲的目標數據類型的值域範圍之外,則將發生錯誤。
通常,可以在代碼中使用數據類型轉換函數,以表明某個操作的結果應表示爲特定數據類型而非默認的數據類型。例如,使用 CCur 在通常會出現單精度、雙精度或整型運算的地方強制使用貨幣運算。
應該使用數據類型轉換函數而不是 Val 來提供數據類型之間國際認可的轉換。例如,當使用 CCur 時,不同的小數點、不同的千位分隔符以及各種貨幣選項都會根據計算機的區域設置正確識別。
當小數部分恰好爲 0.5 時,CInt 和 CLng 始終都會將其舍入到最接近的偶數。例如,0.5 舍入到 0,而 1.5 舍入到 2。CInt 和 CLng 與 Fix 和 Int 函數不同,後者會將數字的小數部分截斷,而不會對其進行舍入。另外,Fix 和 Int 會始終返回與傳入類型相同類型的值。
可以使用 IsDate 函數確定 date 是否可以轉換爲日期或時間。CDate 可識別日期文本和時間文本,以及處於可接受的日期範圍內的某些數字。將數字轉換爲日期時,整數部分將被轉換爲日期。數字的任何小數部分都將被轉換爲一天中的時間(從午夜 12 點開始計算)。
CDate 將根據系統的區域設置 (區域設置:對應於給定語言和國家/地區的一組信息。)識別日期格式。如果採用可識別的日期設置之外的其他格式提供日期值,則可能無法確定正確的年、日、月順序。此外,如果長日期格式中還包含星期字符串,也不能識別此格式。
CVDate 函數也提供了與 Visual Basic 早期版本的兼容性。CVDate 函數的語法與 CDate 函數的語法相同;不過,CVDate 會返回一個 Variant 值(其子類型爲 Date)而不是實際的 Date 類型。由於目前存在一個固有的 Date 類型,因此已不再需要 CVDate 了。可以將表達式轉換爲 Date,然後將其賦值給 Variant,從而達到相同的效果。此技術與所有其他固有類型到其對應的 Variant 子類型的轉換一致。
註釋 CDec 函數不會返回離散數據類型;相反,它會始終返回一個其值已轉換爲 Decimal 子類型的 Variant。
示例
註釋 以下示例演示了此功能在 Visual Basic for Applications (VBA) 模塊中的使用。有關使用 VBA 的詳細信息,請在“搜索”旁邊的下拉列表中選擇“開發人員參考”,然後在搜索框中輸入一個或多個詞條。
CBool 函數
此示例使用 CBool 函數將表達式轉換爲 Boolean 值。如果表達式的求值結果是一個非零值,CBool 將返回 True;否則,它將返回 False。
Dim A, B, Check
A = 5: B = 5 ' Initialize variables.
Check = CBool(A = B) ' Check contains True.
A = 0 ' Define variable.
Check = CBool(A) ' Check contains False.
CByte 函數
此示例使用 CByte 函數將表達式轉換爲 Byte 值。
Dim MyDouble, MyByte
MyDouble = 125.5678 ' MyDouble is a Double.
MyByte = CByte(MyDouble) ' MyByte contains 126.
CCur 函數
此示例使用 CCur 函數將表達式轉換爲 Currency 值。
Dim MyDouble, MyCurr
MyDouble = 543.214588 ' MyDouble is a Double.
MyCurr = CCur(MyDouble * 2)
' Convert result of MyDouble * 2 (1086.429176) to a
' Currency (1086.4292).
CDate 函數
此示例使用 CDate 函數將字符串轉換爲 Date 值。通常,建議不將日期和時間硬編碼爲字符串(如本示例中所示)。請改用日期文本和時間文本,如 #2/12/1969# 和 #4:45:23 PM#。
Dim MyDate, MyShortDate, MyTime, MyShortTime
MyDate = "February 12, 1969"
' Convert to Date data type.
MyShortDate = CDate(MyDate)
MyTime = "4:35:47 PM"
' Convert to Date data type.
MyShortTime = CDate(MyTime)
CDbl 函數
此示例使用 CDbl 函數將表達式轉換爲雙精度型值。
Dim MyCurr, MyDouble
MyCurr = CCur(234.456784)
' Convert result to a Double.
MyDouble = CDbl(MyCurr * 8.2 * 0.01)
CDec 函數
此示例使用 CDec 函數將數值轉換爲 Decimal 值。
Dim MyDecimal, MyCurr
MyCurr = 10000000.0587 ' MyCurr is a Currency.
MyDecimal = CDec(MyCurr) ' MyDecimal is a Decimal.
CInt 函數
此示例使用 CInt 函數將值轉換爲 Integer 值。
Dim MyDouble, MyInt
MyDouble = 2345.5678 ' MyDouble is a Double.
MyInt = CInt(MyDouble) ' MyInt contains 2346.
CLng 函數
此示例使用 CLng 函數將值轉換爲 Long 值。
Dim MyVal1, MyVal2, MyLong1, MyLong2
MyVal1 = 25427.45
MyVal2 = 25427.55 ' MyVal1, MyVal2 are Doubles.
MyLong1 = CLng(MyVal1)
' MyLong1 contains 25427.
MyLong2 = CLng(MyVal2)
' MyLong2 contains 25428.
CSng 函數
此示例使用 CSng 函數將值轉換爲 Single 值。
Dim MyDouble1, MyDouble2, MySingle1, MySingle2
' MyDouble1, MyDouble2 are Doubles.
MyDouble1 = 75.3421115: MyDouble2 = 75.3421555
MySingle1 = CSng(MyDouble1)
' MySingle1 contains 75.34211.
MySingle2 = CSng(MyDouble2)
' MySingle2 contains 75.34216.
CStr 函數
此示例使用 CStr 函數將數值轉換爲 String 值。
Dim MyDouble, MyString
MyDouble = 437.324 ' MyDouble is a Double.
MyString = CStr(MyDouble)
' MyString contains "437.324".
CVar 函數
此示例使用 CVar 函數將表達式轉換爲 Variant 值。
Dim MyInt, MyVar
MyInt = 4534 ' MyInt is an Integer.
MyVar = CVar(MyInt & "000")
' MyVar contains the string 4534000