類型轉換函數
每個函數都會將運算式強制為特定資料類型。
語法
- CBool(運算式)
- CByte(運算式)
- CCur(運算式)
- CDate(運算式)
- CDbl(運算式)
- CDec(運算式)
- CInt(運算式)
- CLng(運算式)
- CLngLng(運算式) (僅在 64 位元平台上有效。)
- CLngPtr(運算式)
- CSng(運算式)
- CStr(運算式)
- CVar(運算式)
必要的運算式引數是任何字串運算式或數值運算式。
傳回類型
函數名稱決定傳回類型,如下所示:
函數 | 傳回類型 | 運算式引數的範圍 |
---|---|---|
CBool | 布林值 | 任何有效的字串或數值運算式。 |
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;小數捨去。 |
CLngLng | LongLong | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807; 小數捨去。 (只有 64 位元平台上有效。) |
CLngPtr | LongPtr | 32 位元系統上為 -2,147,483,648 到 2,147,483,647,64 位元系統上為 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807;32 位元和 64 位元系統上小數捨去。 |
CSng | Single | 負數值為 -3.402823E38 到 -1.401298E-45;正數值為 1.401298E-45 到 3.402823E38。 |
CStr | String | 根據運算式引數傳回 CStr。 請參閱以下表格。 |
CVar | Variant | 數值範圍與 Double 相同。 非數值範圍與字串相同。 |
註解
如果傳遞給函數的運算式超出要轉換至的資料類型範圍,則會發生錯誤。
注意事項
轉換函數必須用來將 LongLong (包括在 64 位元平台上的 LongPtr ) 明確地指派為較小的整數類型。 不允許將 LongLong 隱含轉換為較小的整數。
通常,您可以使用資料類型轉換函數來記錄代碼,以顯示某些作業的結果應表示為特定 資料類型而不是預設資料類型。 例如,在可能發生單精度、雙精度或整數運算的情況下,使用 CCur 來強制執行貨幣運算。
您應使用的資料類型轉換函數,而不是 Val,提供從一種資料類型到另一種資料類型的國際認可轉換方式。 例如,當您使用 CCur 時,根據電腦的本機設定,可以正確識別不同的十進位分隔符號、不同的千位分隔符號和各種貨幣選項。
當小數部分恰好為 0.5 時,CInt 和 CLng 一律會將其四捨五入到最接近的偶數。 例如,0.5 四捨五入為 0,1.5 四捨五入為 2。 CInt 和 CLng 與 Fix 和 Int 函數不同,其會捨去,而不是將小數部分四捨五入。 此外,Fix 和 Int 一律會傳回與傳入類型相同的值。
使用 IsDate 函數來判斷 date 是否可轉換為日期或時間。 CDate 可識別日期常值和時間常值以及一些屬於可接受日期範圍的數字。 將數字轉換為日期時,會將整個數字部分轉換為日期。 該數字的任何小數部分都將轉換為一天中的某個時間,從午夜開始。
CDate 會根據您系統的地區設定辨識日期格式。 如果以不同於其中一個已識別日期設定的格式提供日、月和年的正確順序,則可能無法判斷。 此外,如果長日期格式還包含 day-of-the-week 字串,則無法識別其日期格式。
為與 Visual Basic 的舊版本相容,也會提供 CVDate 函數。 CVDate 函數的語法與 CDate 函數的語法相同;但是,CVDate 傳回 Variant ,其子類型是 Date 而不是實際 Date 類型。 因為現在已有內建的 Date 類型,就不再需要 CVDate。 透過將運算轉換為 Date,然後將其指派給 Variant,可以達到相同的效果。 此技術與所有其他內在類型轉換為其等效的 Variant 子類型一致。
注意事項
CDec 函數不會傳回特定資料類型;相反地,它一律傳回 Variant,其值已轉換成 Decimal 子類型。
CStr的傳回取決於表達式引數。
若運算式為 | CStr 傳回 |
---|---|
Boolean | 包含True 或 False 的字串。 |
Date | 包含系統中簡短日期樣式日期的字串。 |
Empty | 零長度字串 ("")。 |
Error | 其中包含 Error 後面加上錯誤代碼的字串。 |
Null | 執行階段錯誤。 |
其他數值 | 包含數值的字串。 |
CBool 函數範例
此範例使用 CBool 函數將運算式轉換成布林值。 如果運算式評估為非零值,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 函數將字串轉換為日期。 一般而言,不建議使用硬式編碼的日期和時間字串 (如範例所示)。 請改用日期常值和時間常值,例如 #2/12/1969#
和 #4:45:23 PM#
。
Dim MyDate, MyShortDate, MyTime, MyShortTime
MyDate = "February 12, 1969" ' Define date.
MyShortDate = CDate(MyDate) ' Convert to Date data type.
MyTime = "4:35:47 PM" ' Define time.
MyShortTime = CDate(MyTime) ' Convert to Date data type.
CDbl 函數範例
此範例使用 CDbl 函數將運算式轉換成 Double。
Dim MyCurr, MyDouble
MyCurr = CCur(234.456784) ' MyCurr is a Currency.
MyDouble = CDbl(MyCurr * 8.2 * 0.01) ' Convert result to a Double.
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 函數將數值轉換成字串。
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.
另請參閱
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。