類型轉換函數

每個函數都會將運算式強制為特定資料類型。

語法

  • 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 支援與意見反應。