目录

类型转换函数

语法

返回类型

说明

CBool 函数示例

CByte 函数示例

CCur 函数示例

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

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

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

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

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

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

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

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

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

StrConv 函数

StrConv 函数示例


类型转换函数

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

语法

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 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 依据 expression 参数返回 Cstr。
CVar Variant 若为数值,则范围与 Double 相同;若不为数值,则范围与 String 相同。

说明

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

注意:必须使用转换函数将 LongLong(包括 64 位平台上的 LongPtr)显式赋予较小的整型。不允许将 LongLong 隐式转换为较小的整数。

通常,在编码时可以使用数据类型转换函数,来体现某些操作的结果应该表示为特定的数据类型,而不是缺省的数据类型。例如,当单精度、双精度或整数运算发生的情况下,使用 CCur 来强制执行货币运算。

应该使用数据类型转换函数来代替 Val,以使国际版的数据转换可以从一种数据类型转换为另一种。例如,当使用 Ccur 时,不同的小数点分隔符、千分位分隔符和各种货币选项,依据系统的区域设置都会被妥善识别。

当小数部分恰好为 0.5 时,CintCLng 函数会将它转换为最接近的偶数值。例如,0.5 转换为 0、1.5 转换为 2。CintCLng 函数不同于 FixInt 函数,FixInt 函数会将小数部分截断而不是四舍五入。并且 FixInt 函数总是返回与传入的数据类型相同的值。

使用 IsDate 函数,可判断 date 是否可以被转换为日期或时间。Cdate 可用来识别日期文字和时间文字,以及落入可接受的日期范围内的数值。当转换一个数字成为日期时,是将整数部分转换为日期,小数部分转换为从午夜起算的时间。

CDate 依据系统上的区域设置来决定日期的格式。如果提供的格式为不可识别的日期设置,则不能正确判断年、月、日的顺序。另外,长日期格式,若包含有星期的字符串,也不能被识别。

CVDate 函数也提供对早期 Visual Basic 版本的兼容性。CVDate 函数的语法与 CDate 函数是完全相同的,不过,CVDate 是返回一个 Variant,它的子类型是 Date,而不是实际的 Date 类型。因为现在已有真正的 Date 类型,所以 CVDate 也不再需要了。转换一个表达式成为 Date,再赋值给一个 Variant,也可以达到同样的效果。也可以使用这种技巧将其他真正的数据类型转换为对等的 Variant 子类型。

注意 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

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"    ' 定义日期。
MyShortDate = CDate(MyDate)    ' 转换为 Date 数据类型。MyTime = "4:35:47 PM"    ' 定义时间。
MyShortTime = CDate(MyTime)    ' 转换为 Date 数据类型。

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

Dim MyCurr, MyDouble
MyCurr = CCur(234.456784)    ' MyCurr 为 Currency。
MyDouble = CDbl(MyCurr * 8.2 * 0.01)    ' 转换结果为 Double。

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 包含字符串 ' 4534000.

StrConv 函数

返回按指定类型转换的 Variant (String)。

语法

StrConv(string, conversion, LCID)

StrConv 函数的语法有下面的命名参数:

部分 说明
string 必要参数。要转换的字符串表达式。
conversion 必要参数。Integer。其值的和决定转换的类型。
LCID 可选的。如果与系统LocaleID不同,则为LocaleID(系统LocaleID为缺省值。)

设置值

conversion 参数的设置值为:

常数 说明
vbUpperCase 1 将字符串文字转成大写。
vbLowerCase 2 将字符串文字转成小写。
vbProperCase 3 将字符串中每个字的开头字母转成大写。
vbWide* 4* 将字符串中单字节字符转成双字节字符。
vbNarrow* 8* 将字符串中双字节字符转成单字节字符。
vbKatakana** 16** 将字符串中平假名字符转成片假名字符。
vbHiragana** 32** 将字符串中片假名字符转成平假名字符。
vbUnicode 64 根据系统的缺省码页将字符串转成 Unicode。 (在Macintosh中不可用。)
vbFromUnicode 128 将字符串由 Unicode 转成系统的缺省码页。 (在Macintosh中不可用。)

*应用到远东区域。

**仅应用到日本。

注意 这些常数是由 VBA 指定的。可以在程序中使用它们来替换真正的值。其中大部分是可以组合的,例如 vbUpperCase + vbWide,互斥的常数不能组合,例如 vbUnicode + vbFromUnicode。当在不适用的区域使用常数 vbWidevbNarrowvbKatakana,和 vbHiragana 时,就会导致运行时错误。

下面是一些一般情况下的有效分界符:Null (Chr$(0)),水平制表符 (Chr$(9)),换行 (Chr$(10)),垂直制表符 (Chr$(11)),换页 (Chr$(12)) ,回车 (Chr$(13)),空白 (SBCS) (Chr$(32))。在 DBCS中,空白的实际值会随国家/地区而不同。

说明

在把 ANSI 格式的 Byte 数组转换为字符串时,您应该使用 StrConv 函数。当您转换 Unicode 格式的这种数组时,使用赋值语句。

StrConv 函数示例

本示例使用StrConv 函数来将Unicode 字符串转换成 ANSI 字符串。

Dim i As Long
Dim x() As Byte
x = StrConv("ABCDEFG", vbFromUnicode)    ' 转换字符串。
For i = 0 To UBound(x)Debug.Print x(i)
Next

source:VBA Help

VBA基础语法:类型转换函数相关推荐

  1. VBA基础语法学习代码

    Option Explicit ' 这行指令表示 变量需要显示声明 ,一般用在文件开头. 一.操作单元格对象 注释 Sub test()'弹出对话框' "'"注释 单引号Rem 另 ...

  2. openresty开发系列14--lua基础语法3函数

    openresty开发系列14--lua基础语法3函数 一)function (函数) 有名函数: optional_function_scope function function_name( ar ...

  3. python导入模块的语法结构_python学习第五讲,python基础语法之函数语法,与Import导入模块....

    python学习第五讲,python基础语法之函数语法,与Import导入模块. 一丶函数简介 函数,就是一个代码块,这个代码块是别人写好的.我们调用就可以. 函数也可以称为方法. 1.函数语法定义 ...

  4. (五)Kotlin简单易学 基础语法-初始函数(下)

    (五)Kotlin简单易学 基础语法-初始函数(下) 函数内联 ➢ lambda可以让你更灵活的编写应用,但是,灵活也要付出代价的. ➢在JVM上,你定义的lambda会以对象实例的形式存在,JVM会 ...

  5. CorelDRAW插件-GMS插件开发-VBA基础语法-变量、运算符、函数-CDR插件(三)

    文章目录 1.变量 1.1.命名要求 1.2.作用域 1.3.变量赋值 1.4.数组 2.运算符 2.1.算术操作符 2.2.比较运算符 2.3.逻辑运算符 2.4.连接操作符 3.函数 3.1.无参 ...

  6. T-Bootstrap-day04-组件、boot的定制、scss基础语法和函数

    文章目录 一.常用组件 二.其他组件 boot的定制 一.SCSS,动态的样式语言(nodejs 8.11以上) 二.scss基础语法 三.scss的函数 四.指令(if-else) 一.常用组件 卡 ...

  7. 2021年大数据常用语言Scala(十三):基础语法学习 函数 重点掌握

    目录 函数 重点掌握 定义函数 方法和函数的区别 方法转换为函数 完全体函数 函数 重点掌握 scala支持函数式编程,将来编写Spark/Flink程序中,会大量使用到函数 函数和我们的对象一样, ...

  8. VBA数据类型和类型转换函数

    一.数据类型 1.Boolean--2字节--0-255 2.Byte--1字节--True或False 3.Integer--2字节-- 32768-32767(注意范围) 4.Long--4字节- ...

  9. python字典均值_Python常用基础语法(函数)汇总

    重点( 要求 ): 1.理解语法( 函数 )的作用. 2.理解语法( 函数 )运用举例的代码块. 一.修改字符串(针对英文字符串)大小写. (1)title() : 将字符串(英文)开头字母装换为大写 ...

  10. C++基础::语法特性::函数重写(override)与协变返回类型(covariant return type)

    函数重写 在进行本文的协变返回类型(covariant return type)的讨论之前,不妨先重新温故C++关于函数重写的语法规则.协变返回类型与函数重写有着千丝万缕的联系. 首先明确函数重载(o ...

最新文章

  1. 算法----选择排序(select sort)
  2. QQ第三方登录报错error=-1
  3. gitlab-ci详细说明
  4. 解决表单提交的数据丢失问题
  5. 切洋葱怎么才不流泪?
  6. 学计算机科学与技术会特效吗,女生学计算机科学与技术专业会不会很困难?看完你就明白了!...
  7. hung task日志linux,Linux Kernel Crash--hung_task_timeout_secs
  8. 【转】深入理解JVM—JVM内存模型
  9. 用imspost制作catia后处理_为什么我推荐你用3D打印技术制造模具?
  10. iconfont添加新图标_IconFont图标引用的方法步骤(代码)
  11. html怎么填充单元格颜色,PPT表格单元格怎么填充颜色 PPT填充表格单元格颜色的详细教程...
  12. Java调用外部api接口请求数据(阿里云ISBN查询图书信息为例)
  13. VGA , CVBS , HDMI 三者的区别
  14. 企业如何搭建商业智能BI,过程中又需要注意哪些事项
  15. Access仿Excel的RoundUp函数向上取整的方法。
  16. 博客美化——页面白天黑夜切换
  17. java8 collectors_java8的Collectors.reducing()
  18. c/c++ 输入两个日期,计算日期相差多少天
  19. 每日一练-10-求矩阵主对角线及副对角线元素的和
  20. 大学计算机长文档排版教学视频教程,大学计算机基础中Word长文档排版的教学思考...

热门文章

  1. Android 11.0 修改下拉通知栏的NotificationGuts背景为圆角背景
  2. HDU 5977 Garden of Eden (树形dp+快速沃尔什变换FWT)
  3. office2003注册序列号CAB文件丢失…
  4. 国外计算机论文范文精选,国外计算机论文参考范文.doc
  5. Spring容器父子关系
  6. 备案后可以改服务器信息吗,域名备案后可以更改服务器
  7. USB TO I2C(上海同旺电子)调试器调试LM75A--TI
  8. [code] 在ROS上搭建ROVIO节点
  9. 服务器移动用户打不开网站图片,为什么有些网站移动网络打不开?
  10. 新概念英语精讲 钟平 pdf_新概念英语三()