vba中数据类型转换

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

类型转换函数
请参阅示例特性
每个函数都可以强制将一个表达式转换成某种特定数据类型。

语法
CBool(expression)
CByte(expression)
CCur(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CLngLng(expression)(只在 64 位平台上有效。


CLngPtr(expression)
CSng(expression)
CStr(expression)
CVar(expression)
CStr(expression)
必要的expression参数可以是任何字符串表达式或数值表达式。

返回类型
函数名称决定返回类型,如下所示:
函数返回类型expression参数范围
CBool Boolean任何有效的字符串或数值表达式。

CByte Byte0 至 255。

CCur Currency-922,337,203,685, 至922,337,203,685,。

CDate Date任何有效的日期表达式。

CDbl Double 负数从至;正数从至。

CDec Decimal零变比数值,即无小数位数值,为
+/-79,228,162,514,264,337,593,543,950,335。

对于 28 位小数的数值,范围则为
+/;最小的可能非零值是。

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负数为至;正数为至。

CStr String依据expression 参数返回 Cstr。

CVar Variant若为数值,则范围与Double 相同;若不为数值,
则范围与String 相同。

说明
如果传递给函数的expression 超过转换目标数据类型的范围,将发生错误。

通常,在编码时可以使用数据类型转换函数,来体现某些操作的结果应该表示为特定的数据类型,而不是缺省的数据类型。

例如,当单精度、双精度或整数运算发生的情况下,使用CCur 来强制执行货币运算。

应该使用数据类型转换函数来代替Val,以使国际版的数据转换可以从一种数据类型转换为另一种。

例如,当使用Ccur 时,不同的小数点分隔符、千分位分隔符和各种货币选项,依据系统的区域设置都会被妥善识别。

当小数部分恰好为时,Cint 和CLng 函数会将它转换为最接近的偶数值。

例如,转换为 0、转换为 2。

Cint 和CLng 函数不同于Fix 和Int 函数,Fix 和Int 函数会将小数部分截断而不是四舍五入。

并且Fix 和Int 函数总是返回与传入的数据类型相同的值。

使用IsDate函数,可判断date 是否可以被转换为日期或时间。

Cdate 可用来识别日期文字和时间文字,以及落入可接受的日期范围内的数值。

当转换一个数字成为日期时,是将整数部分转换为日期,小数部分转换为从午夜起算的时间。

CDate 依据系统上的区域设置来决定日期的格式。

如果提供的格式为不可识别的日期设置,则不能正确判断年、月、日的顺序。

另外,长日期格式,若包含有星期的字符串,也不能被识别。

注意 CDec函数不能返回独立的数据类型,而总是返回一个Variant,它的值已经被转换为Decimal 子类型。

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 = ' MyDouble 为 Double。

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

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

Dim MyDouble, MyCurr
MyDouble = ' MyDouble 为 Double。

MyCurr = CCur(MyDouble * 2) ' 将 MyDouble * 2 的结果' 转换为
' Currency 。

CDate 函数示例
此示例使用CDate函数将字符串转换为Date。

通常,建议不要将日期和时间硬编码为字符串(如此示例中所示)。

请改为使用日期文字和时间文字,如
#2/12/1969# 和 #4:45:23 PM#。

Dim MyDate, MyShortDate, MyTime, MyShortTime
MyDate = "February 12, 1969" ' 定义日期。

MyShortDate = CDate(MyDate) ' 转换为 Date 数据类型。

MyTime = "4:35:47 PM" ' 定义时间。

MyShortTime = CDate(MyTime) ' 转换为 Date 数据类型。

CDbl 函数示例
此示例使用CDbl函数将表达式转换为Double。

Dim MyCurr, MyDouble
MyCurr = CCur ' MyCurr 为 Currency。

MyDouble = CDbl(MyCurr * * ' 转换结果为 Double。

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

Dim MyDecimal, MyCurr
MyCurr = .0587 ' MyCurr 为 Currency。

MyDecimal = CDec(MyCurr) ' MyDecimal 为 Decimal。

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

Dim MyDouble, MyInt
MyDouble = ' MyDouble 为 Double。

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

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

Dim MyVal1, MyVal2, MyLong1, MyLong2
MyVal1 = :MyVal2 = ' 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 = :MyDouble2 =
MySingle1 = CSng(MyDouble1) ' MySingle1 包含。

MySingle2 = CSng(MyDouble2) ' MySingle2 包含。

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

Dim MyDouble, MyString
MyDouble = ' MyDouble 为 Double。

MyString = CStr(MyDouble) ' MyString 包含 ""。

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

Dim MyInt, MyVar
MyInt = 4534 ' MyInt 为 Integer。

MyVar = CVar(MyInt & "000") ' MyVar 包含字符串 ' 4534000.。

相关文档
最新文档