Double
负值为 -1.79769313486231E308 到 -4.94065645841247E-324;正值为 4.94065645841247E-324 到 1.79769313486232E308。
Decimal
零缩放数(即数字中没有小数位)为 79,228,162,514,264,337,593,543,950,335。 有 28 个小数位的数字的范围为 7.9228162514264337593543950335。 最小的非零数字为 0.0000000000000000000000000001。
Integer
-32,768 到 32,767;分数四舍五入。
-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 位系统分数都四舍五入。
Single
负值为 -3.402823E38 到 -1.401298E-45;正值为 1.401298E-45 到 3.402823E38。
String
CStr 的返回值取决于
expression
参数。
Variant
和“Double”
针对数值型的范围相同。 和“字符串”
针对非数值型的范围相同。
如果传递给函数的
expression
超出转换目标数据类型的范围,则会发生错误。
转换函数必须用于为更小整型显式分配
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”
根据系统的区域设置识别日期格式。 如果日、月和年的正确顺序是以已识别日期设置之外的格式提供的,那么则可能不能确定日、月和年的正确顺序。 此外,如果长日期格式还包含了星期几字符串,则不能识别该格式。
还提供了
CVDate
函数,以便与旧版 Visual Basic 兼容。
CVDate
函数的语法和
CDate
函数的语法一致,但是
CVDate
返回其子类型为
Date
而不是实际
Date
类型的
Variant
。 由于现在存在内部
Date
类型,因此不再需要
CVDate
。 通过将表达式转换为
Date
,然后将其分配给某个
Variant
,能获得相同的效果。 此技术与所有其他内部类型到其对等的“变量”
子类型的转换一致。
“CDec”
函数不返回离散数据类型;反而,它总是返回其值已转换为“小数”
子类型的“变量”
。
CBool 函数示例
本示例使用
CBool
函数将表达式转换为
Boolean
。 如果该表达式计算结果为非零值,则
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 函数将数值转换为 String。
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.
数据类型摘要
Visual Basic 编辑器 (VBE) 术语表
Visual Basic 概念性主题
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。