類型轉換函數

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

語法

  • 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 時,CIntCLng 一律會將其四捨五入到最接近的偶數。 例如,0.5 四捨五入為 0,1.5 四捨五入為 2。 CIntCLngFixInt 函數不同,其會捨去,而不是將小數部分四捨五入。 此外,FixInt 一律會傳回與傳入類型相同的值。

使用 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 包含TrueFalse 的字串。
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 支援與意見反應