-
vba 数值转文本_VBA篇 4.数据类型
2020-12-03 12:10:29数据类型是什么?首先要了解什么是数据类型,就像一篇文章可能包括“中文”、“英文”、“数字”一样,在程序中数据也分为“文本”、“数值”和日期等类型。不同的数据类型占用的内存空间不...本来上一篇只是想简单介绍一下对象,不小心把常用对象也写了,内容可能比较多,不过没关系,大致看看就行了,看不下去也没事,整个“基础篇”都是做了解就行,真要学东西还是自己上手做东西,用的多了就记住了。
这次简单介绍一下数据类型。
数据类型是什么?
首先要了解什么是数据类型,就像一篇文章可能包括“中文”、“英文”、“数字”一样,在程序中数据也分为“文本”、“数值”和日期等类型。不同的数据类型占用的内存空间不同,运算也不相同。(一般不用考虑占用空间的问题。)
在VBA中定义数据类型一般用Dim表示。
Dim表示变量,VBA中也可以用Const定义常量。变量和常量的区别是变量在定义之后可以改变。常量是定义之后就不能再改变了。如果不知道用啥就用变量就可以。
Sub HeWishTest() '定义一个文本变量 赋值为 "何未生" Dim VarStr AS String VarStr = "何未生" '定义一个文本常量 赋值为 "何未生" Const ConstStr AS String = "何未生" '变量是可以改变的 VarStr = "改变" '现在VarStr就成了 "改变" 了 End Sub
String
字符串类型,表示文本内容,用英文双引号引起来。
Sub HeWishTest() '定义一个文本变量 赋值为 "何未生" Dim VarStr AS String VarStr = "何未生" '文本变量可以用加号拼接 VarStr = VarStr + "HeWish" 'VarStr改为 "何未生HeWish" '在立即窗口打印结果 何未生HeWish Debug.Print VarStr End Sub
Long
长整型数值,可以表示-2147483648 ~ 2147483647之间的整数。除了Long,VBA还有个Integer(整型数值)可以表示整数,可以表示的区间为-32768 ~ 32767。使用时如果不能保证数据不会超出32767,请使用Long类型。注意数值型不要用引号引起,直接写就行。
Sub HeWishTest() '定义一个长整型变量 赋值为 65536 Dim VarLong AS Long VarLong = 65536 '数值型可以用加减乘除直接运算 计算除以2 VarLong = VarLong/2 '在立即窗口打印结果 32768 Debug.Print VarLong End Sub
Double
双精度浮点型。在表示负数时可以表示: -1.79769313486231E308 ~ -4.94065645841247E-324;在表示正数时可以表示: 4.94065645841247E-324 ~ 1.79769313486231E308。
与之对应的是Single(单精度浮点型),在表示负数时可以表示: -3.402823E38 ~ -1.401298E-45;在表示正数时可以表示: 1.401298E-45 ~ 3.402823E38
双精度浮点型可以表示小数点14位,单精度浮点型可以表示小数点后6位,多余的会四舍五入进位。
Sub HeWishTest() '定义一个双精度浮点数 赋值为 1.23456789 Dim VarDouble AS Double VarDouble = 1.23456789 '同样可以用加减乘除直接运算 计算除以2 VarDouble = VarDouble/2 '在立即窗口打印结果 0.617283945 Debug.Print VarDouble '定义一个单精度浮点数 赋值为 1.234567 Dim VarSingle AS Single VarSingle = 1.23456789 '在立即窗口打印 1.234568 Debug.Print VarSingle '同样可以用加减乘除直接运算 计算除以2 VarSingle = VarSingle/2 '在立即窗口打印结果 0.6172839 猜测可能是因为没有后续运算,导致数值类型未正确识别的Bug Debug.Print VarSingle '加1 VarSingle = VarSingle + 1 '在立即窗口打印结果 1.617284 保留小数点后6位数 Debug.Print VarSingle End Sub
Boolean
布尔型。只有两个选项,真和假,要么“True”要么“False”。
Sub HeWishTest() '定义一个布尔型 赋值为 true Dim VarBool As Boolean VarBool = True '如果为真则打印“真”,否则打印“假” If VarBool Then Debug.Print "真" Else Debug.Print "假" End If End Sub
Date
日期类型,可以表示日期和时间。可以表示的日期范围是100年1月1日 ~ 9999年12月31日;可以表示的时间范围是:0:00:00 ~ 23:59:59。
之前面像对象那篇提过Range的Value属性和Value2属性的区别,其中Value属性读取到的 设置为日期格式的 单位格内容 会读取为Date类型。
Sub HeWishTest() '定义一个日期型变量,读取A1单元格的日期 Dim VarDate As Date VarDate = Range("A1").Value '在立即窗口打印结果 2020/8/23 Debug.Print VarDate '直接赋值日期的话要加双引号 VarDate = "2020/8/23" '分别打印年、月、日 Debug.Print Year(VarDate) Debug.Print Month(VarDate) Debug.Print Day(VarDate) End Sub
其他
上述五种就是VBA中最常用的数据类型,在不熟悉的情况下Long和Integer就用Long;Double和Single就用Double,可以避免一些错误,等熟悉了之后再做区分也可以。
除了上面的几种之外还有Object类型以及枚举Enum型的,这两种我都没用过,不影响写出完整的程序,感兴趣的可以自己去找资料看看。还有Variant类型,这个不建议使用。
结语
其实VBA在写的时候是可以不声明的,可以直接用,但是为了代码的可读性还是建议在代码块开始处定义好变量。当然,也可以只声明变量不声明类型。
'在模块最前面输入 Option Explicit 可以开启强制声明变量,在存在 没有声明的变量 时会报错 Option Explicit Sub HeWishTest() '不声明直接用 默认可以直接使用,在有“Option Explicit”时会提示“变量未定义”。 VarDate = "2020/8/23" '只声明变量,不声明类型 Dim VarStr VarStr = "测试" '同时声明多个变量,用英文逗号隔开即可 Dim VarStr2 AS String,VarDouble AS Double VarStr2 = "测试2" VarDouble = 123.456 End Sub
整个系列在语雀知识库同步,感觉语雀上的目录更明确一些,有兴趣可以去看看
VBA从入门到放弃 · 语雀www.yuque.com -
声明及赋值_Excel VBA的变量声明与赋值
2021-01-15 09:07:16VBA中声明变量,有4中变量,他们是:基本类型变量。基本类型变量是那些存储单个数据的变量,例如数字、文本、日期等。通用变量。通用变量,即Variant类型变量,该变量的类型在程序运行过程中,根据赋值的数据自动...什么是变量
变量是一个存储数据的VBA代码结构,在代码中,通过变量名获取变量所代表的值。而声明变量,就是告诉VBA,变量的名字和它所存储值的数据类型。
VBA中声明变量,有4中变量,他们是:
基本类型变量。基本类型变量是那些存储单个数据的变量,例如数字、文本、日期等。
通用变量。通用变量,即Variant类型变量,该变量的类型在程序运行过程中,根据赋值的
数据自动指定。
数组。 数组包含多个变量的集合
对象。对象包含一些列属性和方法
声明语句的基本语法
4种类型的变量的声明方法基本一致。他们的语法如下:
1.基本类型变量
2.通用变量
声明Variant类型变量时,如果忽略数据类型,默认情况是Variant类型,因此下方两种方式是相同的
3.数组
4. 对象
声明对象时,一般有两种方式。一种是前期绑定,即一开始就指定对象的类型;一种是后期绑定,即声明是不指定对象类型,后期指定。
在哪里写声明语句
声明变量,意思是在使用变量前,告诉VBA变量的名字和数据类型。因此,声明变量的语句,必须写在使用它的语句前。
错误写法
如果先于声明语句前使用变量,VBA会报[变量未定义错误]。
正确的写法
如何声明多个同类型变量
通过以上部分的学习,在写多个同类型变量的声明语句时,有人可能会按一下方式写:
首先,以上写法,语法上没问题,不会出现错误。但是,这种方式声明变量,Integer类型只作为第二个j变量的数据类型。第一个变量,即i变量,它的数据类型是Variant,并不是Integer类型。
因此,VBA中不能合并声明语句。正确的声明方法如下:
声明变量是必须的吗
准确来讲,VBA中声明变量不是必须的。也就是说,没有声明变量,而直接开始用,也没有错误。
但是,不声明变量,是一种不好的习惯,也常常会带来很多错误。
不声明变量的典型弊端包括:
数据类型自动设置为Variant类型,效率低。
变量名写错,不会提示错误。
无法使用VBA代码自动补全
数量类型不匹配时,不会提示错误。
基于以上原因,强烈建议,每次使用变量,都要声明其变量名和数据类型。
VBA提供一个选项,可以强制变量声明,即在模块头部写上一下语句:
Option Explicit
模块中有以上语句时,如果未声明变量而直接使用变量,VBA会提示"变量未定义"错误,方便检查代码。
设置VBA编辑器变量声明选项时,可以自用为每个模块插入Option Explicit语句,不需要手动书写。设置方法如下:
总结
以上是VBA中最基本变量声明与赋值方法。声明和赋值变量,是代码的开始部分,需要数量掌握。
关于声明变量和赋值,还有几个比较重要的知识点、包括相关错误和局部、全局变量、这部分内容将会做单独的、详细的介绍。
私信 视频 可以获取54集VBA入门视频
私信 VBA或 vba 可以获取文章中含VBA代码的Excle文件
-
Excel_VBA教程
2014-09-22 11:36:34第六章 在VBA中重复操作 123 1.DO LOOPS: DO…WHILE和DO…UNTIL 123 2.观察过程执行 126 3.WHILE…WEND循环 127 4.FOR…NEXT 循环 128 5.FOR EACH…NEXT循环 129 7.提前跳出循环 130 8.循环嵌套 131 9.接下来… 131 ... -
variant每个成员必赋值_Excel VBA的变量声明与赋值
2020-12-10 12:50:57VBA中声明变量,有4中变量,他们是:基本类型变量。基本类型变量是那些存储单个数据的变量,例如数字、文本、日期等。通用变量。通用变量,即Variant类型变量,该变量的类型在程序运行过程中,根据赋值的数据自动...什么是变量
变量是一个存储数据的VBA代码结构,在代码中,通过变量名获取变量所代表的值。而声明变量,就是告诉VBA,变量的名字和它所存储值的数据类型。
VBA中声明变量,有4中变量,他们是:
基本类型变量。基本类型变量是那些存储单个数据的变量,例如数字、文本、日期等。
通用变量。通用变量,即Variant类型变量,该变量的类型在程序运行过程中,根据赋值的
数据自动指定。
数组。 数组包含多个变量的集合
对象。对象包含一些列属性和方法
声明语句的基本语法
4种类型的变量的声明方法基本一致。他们的语法如下:
1.基本类型变量
2.通用变量
声明Variant类型变量时,如果忽略数据类型,默认情况是Variant类型,因此下方两种方式是相同的
3.数组
4. 对象
声明对象时,一般有两种方式。一种是前期绑定,即一开始就指定对象的类型;一种是后期绑定,即声明是不指定对象类型,后期指定。
在哪里写声明语句
声明变量,意思是在使用变量前,告诉VBA变量的名字和数据类型。因此,声明变量的语句,必须写在使用它的语句前。
错误写法
如果先于声明语句前使用变量,VBA会报[变量未定义错误]。
正确的写法
如何声明多个同类型变量
通过以上部分的学习,在写多个同类型变量的声明语句时,有人可能会按一下方式写:
首先,以上写法,语法上没问题,不会出现错误。但是,这种方式声明变量,Integer类型只作为第二个j变量的数据类型。第一个变量,即i变量,它的数据类型是Variant,并不是Integer类型。
因此,VBA中不能合并声明语句。正确的声明方法如下:
声明变量是必须的吗
准确来讲,VBA中声明变量不是必须的。也就是说,没有声明变量,而直接开始用,也没有错误。
但是,不声明变量,是一种不好的习惯,也常常会带来很多错误。
不声明变量的典型弊端包括:
数据类型自动设置为Variant类型,效率低。
变量名写错,不会提示错误。
无法使用VBA代码自动补全
数量类型不匹配时,不会提示错误。
基于以上原因,强烈建议,每次使用变量,都要声明其变量名和数据类型。
VBA提供一个选项,可以强制变量声明,即在模块头部写上一下语句:
Option Explicit
模块中有以上语句时,如果未声明变量而直接使用变量,VBA会提示"变量未定义"错误,方便检查代码。
设置VBA编辑器变量声明选项时,可以自用为每个模块插入Option Explicit语句,不需要手动书写。设置方法如下:
总结
以上是VBA中最基本变量声明与赋值方法。声明和赋值变量,是代码的开始部分,需要数量掌握。
关于声明变量和赋值,还有几个比较重要的知识点、包括相关错误和局部、全局变量、这部分内容将会做单独的、详细的介绍。
私信 视频 可以获取54集VBA入门视频
私信 VBA或 vba 可以获取文章中含VBA代码的Excle文件
-
ExcelVBA程序设计.doc
2011-04-05 21:32:51第六章 在VBA中重复操作 123 1.DO LOOPS: DO…WHILE和DO…UNTIL 123 2.观察过程执行 126 3.WHILE…WEND循环 127 4.FOR…NEXT 循环 128 5.FOR EACH…NEXT循环 129 7.提前跳出循环 130 8.循环嵌套 131 9.接下来… 131 ... -
Access和Access VBA学习总结
2016-08-04 09:31:01Access允许九种数据类型:文本、备注、数值、日期/时间、货币、自动编号、是/否、OLE对象、超级链接、查询向导。在表的设计视图中,每一个字段都有设计类型。 文本:这种类型允许最大255个字符或数字,Access...access具有哪些数据类型,各有什么作用
Access允许九种数据类型:文本、备注、数值、日期/时间、货币、自动编号、是/否、OLE对象、超级链接、查询向导。在表的设计视图中,每一个字段都有设计类型。
文本:这种类型允许最大255个字符或数字,Access默认的大小是50个字符,而且系统只保存输入到字段中的字符,而不保存文本字段中未用位置上的空字符。可以设置“字段大小”属性控制可输入的最大字符长度。
备注:这种类型用来保存长度较长的文本及数字,它允许字段能够存储长达64000个字符的内容。但Access不能对备注字段进行排序或索引,却可以对文本字段进行排序和索引。在备注字段中虽然可以搜索文本,但却不如在有索引的文本字段中搜索得快。
数字:这种字段类型可以用来存储进行算术计算的数字数据,用户还可以设置“字段大小”属性定义一个特定的数字类型,任何指定为数字数据类型的字型可以设置成“字节”、“整数”、“长整数”、“单精度数”、“双精度数”、“同步复制ID”、“小数”五种
类型。在Access中通常默认为“双精度数”。
日期/时间:这种类型是用来存储日期、时间或日期时间一起的,每个日期/时间字段需要8个字节来存储空间。
货币:这种类型是数字数据类型的特殊类型,等价于具有双精度属性的数字字段类型。向货币字段输入数据时,不必键入人民币符号和千位处的逗号,Access会自动显示人民币符号和逗号,并添加两位小数到货币字段。当小数部分多于两位时,Access会对数据进行四
舍五入。精确度为小数点左方15位数及右方4位数。
自动编号:这种类型较为特殊,每次向表格添加新记录时,Access会自动插入唯一顺序或者随机编号,即在自动编号字段中指定某一数值。自动编号一旦被指定,就会永久地与记录连接。如果删除了表格中含有自动编号字段的一个记录后,Access并不会为表格自动编
号字段重新编号。当添加某一记录时,Access不再使用已被删除的自动编号字段的数值,而是重新按递增的规律重新赋值。
是/否:这种字段是针对于某一字段中只包含两个不同的可选值而设立的字段,通过是/否数据类型的格式特性,用户可以对是/否字段进行选择。
OLE对象:这个字段是指字段允许单独地“链接”或“嵌入”OLE对象。添加数据到OLE对象字段时,可以链接或嵌入Access表中的OLE对象是指在其他使用OLE协议程序创建的对象,例如WORD文档、EXCEL电子表格、图像、声音或其他二进制数据。OLE对象字段最大可为
1GB,它主要受磁盘空间限制。
超级链接:这个字段主要是用来保存超级链接的,包含作为超级链接地址的文本或以文本形式存储的字符与数字的组合。当单击一个超级链接时,WEB浏览器或Access将根据超级链接地址到达指定的目标。超级链接最多可包含三部分:一是在字段或控件中显示的文本;
二是到文件或页面的路径;三是在文件或页面中的地址。在这个字段或控件中插入超级链接地址最简单的方法就是在“插入”菜单中单击“超级链接”命令。
查阅向导:这个字段类型为用户提供了一个建立字段内容的列表,可以在列表中选择所列内容作为添入字段的内容
二、如何确定字段数据类型
1、和金钱有关的,用货币型,和金钱无关但需数值计算的选数字型,无需数值计算又不超过255个字符的选文本型,超过255个字符的选备注型。
2、如果只有两个确定的值可供选择,可以用是/否型,也可以用文本型。其他如日期型类型,含义明显,不再叙述。
========ACCESS中的7种常用的数据类型
1. 字符类型:(VARCHAR、CHA)用于存储字符数据,最大长度为255,ACCESS中有两个字符数据:VARCHAR和CHAR,前者用于存储可变长度字符串,后者用于存储固定长度字符串。固定长度会用空格来填充不够的位数,并且检索的时候要比可变的快。
2. 备注类型:(MEMO)长度为64000个字符,由于字符类型数据的最大长度为255个字节,所以没办法存储更长的文字说明,备注类型数据就是为了解决这个问题的。
3. 数字类型:ACCESS中有6种数字类型:
Byte 字节型 整数 0-255
Smallint 整型 整数 -32000-32000
Integer(number) 长整型 整数 -2000000000-2000000000:9个0
Money(currency)货币性 整数和4位小数 正负900000000000000:14个0
Real 单精度 浮点数字 14.E-45 – 3.4E+38
Float 双精度浮点数字 4.9E-324 – 1.8E+308
4. 日期时间类型:(datetime)用于存储日期值,时间值,日期时间混合值:
常规日期
常日期
中日期
短日期
长时间
中时间
短时间
5. 自动编号类型:(counter)每增加一条记录就会自动增加一个编号。
6. 是否类型:(yesno)对一个字段中包含的两种不同的可选值。
7. ole对象类型:允许单独的链接或嵌入OLE对象。相关:SQL数据库。
========access数据库-表
字段数据类型用小数注意点
有个网友问:字段数据类型用小数,输入小数,它会自动保存为整数,即小数部分会被舍去。
正 文:
远程一看,小数 字段属性里 数值范围 为0,这当然不行了。截图解疑
即输入 23.6655555后,它会自动保存为 23
即输入 23.6655555后,它会自动保存为 23.66555
所以小数 数值范围写大点,更适合。
========【Access基础扫盲】小数与null
摘 要:小数,null 空值
正 文:
1.access的四舍五入规则为,任何小于或等于0.5的小数部分都舍去,这一点请注意。经四舍五入后,6.5成为6,6.51成为7.
普通除法:200/6=33.333;200.6/6.8=29.5; 200.8/6.5=30.892
整数除法:200\6=33; 200.6\6.8=28; 200.8\6.5=33;
200.8\6.8相当于int(201\7),其中int是取整函数。
2.比较运算符
在所有的比较运算符情况下,如果第一个值或第二个值为Null(空),则结果也为Null。由于Null表示未知值,因此与Null进行的任何比较的结果也是未知的。这一点需特别注意。当有一个值出现空值时会影响比较结果。
参考:【Access扫盲】用查询找出2个表中相同与不同部分 (在此示例查询sql代码中加入null,否则影响效果)。因为初期不懂null作用,现在明白了!
========0、""(空字串)、Null、Empty、与 Nothing 的区别
摘 要:先回答以下问题吧! 经过以下的叙述之后, 变量 A、B、C、D 分别等于 0、""、Null、 Empty、 Nothing 的哪一个?
正 文:
Dim A
Dim B As String
Dim C As Integer
Dim D As Object
A 等于 Empty, 因为尚未初始化的「不定型变量」都等于 Empty。但如果检测 A = "" 或 A = 0, 也都可以得到 True 值。
B 等于 "", 因为尚未初始化的非固定长度「字串」都等于 "" 。 但请注意 B<> Null。
C 等于 0, 这个还有问题吗?
D 等于 Nothing, 尚未设定有物件的「物件变量」都等于 Nothing, 但请不要使用 D = Nothing , 而要使用 D Is Nothing 来判断 D 是否等于 Nothing, 因为判断 是否相等的符号是 Is 不是 = 。
最令人迷惑的地方是 Null 这个保留字, 请看以下语句:
Print X = Null
Print X <> Null
结果都是输出 Null(不是 True 也不是 False), 这是因为任何一个运算式只要含有 Null , 则该运算式就等于 Null, 实际上想要判断某一数据是否为 Null 绝对不能使用:
If X = Null Then ' 永远都会得到 Null
而要使用:
If IsNull(X) Then
哪一种数据会等于 Null 呢? 除了含有 Null 运算式之外, 就属没有输入任何数据的「数据字段」(在数据库中) 会等于 Null。
========Access sql语句创建表及字段类型
创建一张空表: Sql="Create TABLE [表名]"
创建一张有字段的表: Sql="Create TABLE [表名]([字段名1] MEMO NOT NULL, [字段名2] MEMO, [字段名3] COUNTER NOT NULL, [字段名4] DATETIME, [字段名5] TEXT(200), [字段名6] TEXT(200))
字段类型:
2 : "SmallInt", // 整型
3 : "Int", // 长整型
4 : "Real", // 单精度型
5 : "Float", // 双精度型
6 : "Money", // 货币
7 : "DateTime", // 日期时间
11 : "Bit", // 是否
13 : "TimeStamp",
17 : "TinyInt", // 字节
72 : "UniqueIdentifier", // 同步复制 ID
128 : "Binary",
129 : "Char",
130 : "NChar",
131 : "Decimal", // 小数
133 : "DateTime",
135 : "SmallDateTime",
200 : "VarChar",
201 : "Text",
202 : "VarChar", // 文本
203 : "Text", // 备注
204 : "Binary", // 二进制
205 : "Image" // OLE 对象
以下字段为无编码字段(NChar、NVarchar、NText型) 8,128,130,202,203,204,205 以下字段为按当前系统内码编码的字段(Asp中可用CodePage=936纠正为gb2312内码) 129,200,201
在现有的表中增加字段:
Sql="alter table [表名] add column [字段名] varchar(200)"
修改字段类型:
Sql="alter table [表名] Alter COLUMN 字段名] varchar(50)"
删除表:
Sql="Drop table [表名]"
删除字段:
sql="alter table [表名] drop [字段名]"
修改字段:
Alter TABLE [表名] Alter COLUMN [字段名] 类型(大小) NULL
新建约束:
Alter TABLE [表名] ADD CONSTRAINT 约束名 CHECK ([约束字段] <= '2007-1-1')
删除约束:
Alter TABLE [表名] Drop CONSTRAINT 约束名
新建默认值:
Alter TABLE [表名] ADD CONSTRAINT 默认值名 DEFAULT 'Gziu.CoM' FOR [字段名]
删除默认值:
Alter TABLE [表名] Drop CONSTRAINT 默认值名
=======================================
conn.open connstr sql="alter table [tablename] add hehe char(20)" conn.execute(sql) response.write("添加成功")
ACCESS新建数据库和表还不简单,有了表字段初始化就更简单
=======================================
<%
session("tablen")="news"
'news是已存在的表名
session("fieldsn")="c"
'要添加的字段名
connectionstring="provider=microsoft.jet.oledb.4.0;data source="&server.MapPath("data/qq.mdb")
set conn=server.createobject("adodb.connection")
conn.OPEN connectionstring
jhsql = " Alter Table "&session("tablen")&" add column "&session("fieldsn")&" real "
conn.execute(jhsql)
%>
================================
生成数据表,添加字段,其中id字段为自动增加,测试通过~~
Sub GenAutoIncrementFld()
set cn=server.CreateObject("ADODB.Connection")
set clx=server.CreateObject("ADOX.Column")
set cat=server.CreateObject("ADOX.Catalog")
set tblnam=server.CreateObject("ADOX.Table")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\网站制作\asp操作mdb\db\test.mdb"
Set cat.ActiveConnection = cn
tblnam.Name = "Test"
clx.ParentCatalog = cat
clx.Type = 3
clx.Name = "Id"
clx.Properties("AutoIncrement") = true
tblnam.Columns.Append clx
tblnam.Columns.Append "DataField",130,20
cat.Tables.Append tblnam
Set clx = Nothing
Set cat = Nothing
cn.Close
Set cn = Nothing End Sub
call GenAutoIncrementFld
===================================
字段类型对应数值
''---- DataTypeEnum Values ----
Const adEmpty = 0
Const adTinyInt = 16
Const adSmallInt = 2
Const adInteger = 3
Const adBigInt = 20
Const adUnsignedTinyInt = 17
Const adUnsignedSmallInt = 18
Const adUnsignedInt = 19
Const adUnsignedBigInt = 21
Const adSingle = 4
Const adDouble = 5
Const adCurrency = 6
Const adDecimal = 14
Const adNumeric = 131
Const adBoolean = 11
Const adError = 10
Const adUserDefined = 132
Const adVariant = 12
Const adIDispatch = 9
Const adIUnknown = 13
Const adGUID = 72
Const adDate = 7
Const adDBDate = 133
Const adDBTime = 134
Const adDBTimeStamp = 135
Const adBSTR = 8
Const adChar = 129
Const adVarChar = 200
Const adLongVarChar = 201
Const adWChar = 130
Const adVarWChar = 202
Const adLongVarWChar = 203
Const adBinary = 128
Const adVarBinary = 204
Const adLongVarBinary = 205
Const adChapter = 136
Const adFileTime = 64
Const adPropVariant = 138
Const adVarNumeric = 139
Const adArray = &H2000
========
Access数据类型转换
每个函数都可以将表达式 (表达式:算术或逻辑运算符、常数、函数和字段名称、控件和属性的任意组合,计算结果为单个值。表达式可执行计算、操作字符或测试数据。)强制转换为特定的数据类型 (数据类型:决定字段可拥有的数据类型的字段特征。数据类型包括
Boolean、Integer、Long、Currency、Single、Double、Date、String 和 Variant(默认)。)。
语法
CBool(expression)
CByte(expression)
CCur(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CSng(expression)
CStr(expression)
CVar(expression)
必选的 expression 参数 (参数:为操作、事件、方法、属性、函数或过程提供信息的值。)是任何字符串表达式 (字符串表达式:任一求值为一列连续字符的表达式。表达式的元素可以是:返回字符串或字符串 Variant (VarType 8) 的函数;字符串字面值、常量、变
量或 Variant。)或数值表达式 (数值表达式:计算结果为数字的任何表达式。表达式可以是变量、常数、函数和运算符的任意组合。)。
返回类型
函数名称决定返回类型,如下所示:
函数
返回类型
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;小数部分被四舍五入。
CSng
Single
对于负值,-3.402823E38 到 -1.401298E-45;对于正值,1.401298E-45 到 3.402823E38。
CStr
String
CStr 的返回值取决于 expression 参数。
CVar
Variant
对于数字,与双精度型的值域范围相同。对于非数字值,与 String 的值域范围相同。
注解
如果传递给该函数的 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。
======== -
Excel VBA 基础教程
2019-01-01 18:51:06.................................................................................................................1 1.1 VBA是什么........................................................................... -
中文版Excel.2007高级VBA编程宝典 1/2
2012-04-06 16:00:16本书的作者是当之无愧的世界级Excel电子表格专家,他为读者倾心打造了这本专著,书中汇聚他15年来使用Excel的所有经验,涵盖Excel应用和VBA编程涉及的方方面面,是经典著作Excel 2003 Power Programming with VBA的... -
中文版Excel.2007高级VBA编程宝典 2/2
2012-04-06 16:41:38本书的作者是当之无愧的世界级Excel电子表格专家,他为读者倾心打造了这本专著,书中汇聚他15年来使用Excel的所有经验,涵盖Excel应用和VBA编程涉及的方方面面,是经典著作Excel 2003 Power Programming with VBA的... -
EXCEL编程VBA高级教程
2015-04-16 11:40:55第三节数据类型................................................................................................................................1 第四节变量与常量........................................... -
Excel 2007数据透视表完全剖析 5/7
2012-04-01 09:28:32然后逐步介绍创建数据透视表、自定义透视表、查看视图数据、在透视表内进行计算、使用数据透视图等可视化工具、分析数据源、共享数据表、使用和分析OLAP数据、在透视表中使用宏和VBA等内容,并集中解答了一些常见的... -
Excel 2007数据透视表完全剖析 4/7
2012-04-01 09:23:38然后逐步介绍创建数据透视表、自定义透视表、查看视图数据、在透视表内进行计算、使用数据透视图等可视化工具、分析数据源、共享数据表、使用和分析OLAP数据、在透视表中使用宏和VBA等内容,并集中解答了一些常见的... -
Excel 2007数据透视表完全剖析 3/7
2012-04-01 09:18:53然后逐步介绍创建数据透视表、自定义透视表、查看视图数据、在透视表内进行计算、使用数据透视图等可视化工具、分析数据源、共享数据表、使用和分析OLAP数据、在透视表中使用宏和VBA等内容,并集中解答了一些常见的... -
Excel 2007数据透视表完全剖析 1/7
2012-04-01 09:06:34然后逐步介绍创建数据透视表、自定义透视表、查看视图数据、在透视表内进行计算、使用数据透视图等可视化工具、分析数据源、共享数据表、使用和分析OLAP数据、在透视表中使用宏和VBA等内容,并集中解答了一些常见的... -
从零开始学可视化数据分析师就业课程(Excel、 MySQL、Power BI、Tableau、python、R)
2018-09-17 13:51:13任务171: 工作表_编辑元数据(更改数据类型) 任务172: 编辑元数据(列的重命名与隐藏) 任务173: 编辑元数据(别名) 任务174: 字段操作(合并字段) 任务175: 字段操作(分层字段) 任务176: 字段操作(字段... -
Access2003中文版应用基础教程(高清中文PDF)
2011-05-20 15:24:552-4-1 数据类型的字段属性 2-4-2 设定字段格式与属性 2-5 输入数据技巧 2-5-1 打开工作表窗口 2-5-2 数据表的格式设定 2-5-3 在数据表输入数据 2-5-4 调整字段的列宽与行高 2-6 数据表编辑技巧 2-6-1 选取... -
MYSQL中文手册
2013-03-11 21:21:341.8.1. MySQL遵从的标准是什么 1.8.2. 选择SQL模式 1.8.3. 在ANSI模式下运行MySQL 1.8.4. MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的差别 1.8.6. MySQL处理约束的方式 2. 安装MySQL 2.1. 一般安装问题 ... -
mysql官方中文参考手册
2009-04-11 11:59:181.8.1. MySQL遵从的标准是什么 1.8.2. 选择SQL模式 1.8.3. 在ANSI模式下运行MySQL 1.8.4. MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的差别 1.8.6. MySQL处理约束的方式 2. 安装MySQL 2.1. 一般安装问题 2.1.1. ... -
MySQL 5.1中文手冊
2009-12-11 09:43:121.8.1. MySQL遵从的标准是什么 1.8.2. 选择SQL模式 1.8.3. 在ANSI模式下运行MySQL 1.8.4. MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的差别 1.8.6. MySQL处理约束的方式 2. 安装MySQL 2.1. 一般安装问题 2.1.1. ... -
mysql5.1中文手册
2008-01-09 09:54:20MySQL遵从的标准是什么 1.8.2. 选择SQL模式 1.8.3. 在ANSI模式下运行MySQL 1.8.4. MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的差别 1.8.6. MySQL处理约束的方式 2. 安装MySQL 2.1. 一般... -
MySQL 5.1官方简体中文参考手册
2010-07-02 09:10:241.8.1. MySQL遵从的标准是什么 1.8.2. 选择SQL模式 1.8.3. 在ANSI模式下运行MySQL 1.8.4. MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的差别 1.8.6. MySQL处理约束的方式 2. 安装MySQL 2.1. 一般安装问题 2.1.1. ... -
Access2003中文版应用基础教程part1
2009-04-02 09:00:352-4-1 数据类型的字段属性 2-4-2 设定字段格式与属性 2-5 输入数据技巧 2-5-1 打开工作表窗口 2-5-2 数据表的格式设定 2-5-3 在数据表输入数据 2-5-4 调整字段的列宽与行高 2-6 数据表编辑技巧 2-6-1 选取... -
Access2003中文版应用基础教程part3
2009-04-02 09:21:212-4-1 数据类型的字段属性 2-4-2 设定字段格式与属性 2-5 输入数据技巧 2-5-1 打开工作表窗口 2-5-2 数据表的格式设定 2-5-3 在数据表输入数据 2-5-4 调整字段的列宽与行高 2-6 数据表编辑技巧 2-6-1 选取... -
Access2003中文版应用基础教程part2
2009-04-02 09:16:002-4-1 数据类型的字段属性 2-4-2 设定字段格式与属性 2-5 输入数据技巧 2-5-1 打开工作表窗口 2-5-2 数据表的格式设定 2-5-3 在数据表输入数据 2-5-4 调整字段的列宽与行高 2-6 数据表编辑技巧 2-6-1 选取... -
勤哲excel服务器2010教程
2018-10-01 22:47:0212.1 自定义数据类型 196 12.2 管理模板 200 12.2.1 设置模板属性 200 12.2.2 设置模板权限 203 12.2.3 删除数据 203 12.2.4 删除模板 203 12.2.5 模板定义的导入导出 204 12.2.6 模板数据的初始化 207 12.3 管理... -
MySQL 5权威指南(第3版)--详细书签版
2013-02-05 15:44:0010.3 ENUM和SET数据类型 208 10.3.1 ENUM 208 10.3.2 SET 209 10.4 变量与条件表达式(IF、CASE) 209 10.4.1 变量 210 10.4.2 IF查询 211 10.4.3 CASE分支 211 10.5 在数据表间复制数据 212 10.5.1 利用... -
-
excel的使用
2012-11-25 17:06:01(7) 在单元格中显示公式如果工作表中的数据多数是由公式生成的,想要快速知道每个单元格中的公式形式,以便编辑修改,可以这样做:用鼠标左键单击“工具”菜单,选取“选项”命令,出现“选项”对话框,单击“视图... -
delphi操作excel模块,图片,表格,读写删除
2013-01-30 08:52:31那是什么制造了日期或时间值啦,是格式化。 完全支持公式。你可以使用和Excel一样的函数,也支持对外部工作簿引用的公式,你甚至可以从外部引用读取结果。 与操作Delphi的TStringGrid一样的方式操作单元格,或则... -
XLSReadWriteII v5.10.25 Cracked for XE2-XE4 (Win32)
2013-06-12 22:19:06那是什么制造了日期或时间值啦,是格式化。 •完全支持公式。你可以使用和Excel一样的函数,也支持对外部工作簿引用的公式,你甚至可以从外部引用读取结果。 •与操作Delphi的TStringGrid一样的方式操作单元格,或则...