注解

如果传递给该函数的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'初始化变量。

Check = CBool(A = B)' Check包含True。

A = 0'定义变量。

Check = CBool(A)' Check包含False。

CByte函数

此示例使用CByte函数将表达式转换为Byte值。

Dim MyDouble, MyByte

MyDouble = 125.5678' MyDouble是Double数据类型值。

MyByte = CByte(MyDouble)' MyByte包含126。

CCur函数

此示例使用CCur函数将表达式转换为Currency值。

Dim MyDouble, MyCurr

MyDouble = 543.214588' MyDouble是Double数据类型值。

MyCurr = CCur(MyDouble * 2)

'将MyDouble * 2 (1086.429176)的结果转换为

' Currency数据类型值(1086.4292)。

CDate函数

此示例使用CDate函数将字符串转换为Date值。通常,建议不将日期和时间硬编码为字符串(如本示例中所示)。请改用日期文本和时间文本,如#2/12/1969#和#4:45:23

PM#。

Dim MyDate, MyShortDate, MyTime, MyShortTime

MyDate = "February 12, 1969"

'转换为Date数据类型。

MyShortDate = CDate(MyDate)

MyTime = "4:35:47 PM"

'转换为Date数据类型。

MyShortTime = CDate(MyTime)

CDbl函数

此示例使用CDbl函数将表达式转换为双精度型值。

Dim MyCurr, MyDouble

MyCurr = CCur(234.456784)

'将结果转换为Double数据类型。

MyDouble = CDbl(MyCurr * 8.2 * 0.01)

CDec函数

此示例使用CDec函数将数值转换为Decimal值。

Dim MyDecimal, MyCurr

MyCurr = 10000000.0587' MyCurr是Currency数据类型值。

MyDecimal = CDec(MyCurr)' MyDecimal是Decimal数据类型值。

CInt函数

此示例使用CInt函数将值转换为Integer值。

Dim MyDouble, MyInt

MyDouble = 2345.5678' MyDouble是Double数据类型值。

MyInt = CInt(MyDouble)' MyInt包含2346。

CLng函数

此示例使用CLng函数将值转换为Long值。

Dim MyVal1, MyVal2, MyLong1, MyLong2

MyVal1 = 25427.45

MyVal2 = 25427.55' MyVal1、MyVal2是Double数据类型值。

MyLong1 = CLng(MyVal1)

' MyLong1包含25427。

MyLong2 = CLng(MyVal2)

' MyLong2包含25428。

CSng函数

此示例使用CSng函数将值转换为Single值。

Dim MyDouble1, MyDouble2, MySingle1,

MySingle2

' MyDouble1、MyDouble2是Double数据类型值。

MyDouble1 = 75.3421115: MyDouble2 =

75.3421555

MySingle1 = CSng(MyDouble1)

' MySingle1包含75.34211。

MySingle2 = CSng(MyDouble2)

' MySingle2包含75.34216。

CStr函数

此示例使用CStr函数将数值转换为String值。

Dim MyDouble, MyString

MyDouble = 437.324'

MyDouble是Double数据类型值。

MyString = CStr(MyDouble)

' MyString包含"437.324"。

CVar函数

此示例使用CVar函数将表达式转换为Variant值。

Dim MyInt, MyVar

MyInt = 4534' MyInt是Integer数据类型值。

MyVar = CVar(MyInt &

"000")

' MyVar c包含字符串4534000。