VBA数据类型.doc

上传人:豆**** 文档编号:33464337 上传时间:2022-08-11 格式:DOC 页数:5 大小:56.50KB
返回 下载 相关 举报
VBA数据类型.doc_第1页
第1页 / 共5页
VBA数据类型.doc_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《VBA数据类型.doc》由会员分享,可在线阅读,更多相关《VBA数据类型.doc(5页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、如有侵权,请联系网站删除,仅供学习与交流VBA数据类型【精品文档】第 5 页数据类型存储空间数值范围Byte1字节0 - 255Booleam2字节True或者FalseInteger2字节-32768 - 32767Long(长整型)4字节-2147483648 - 2147483647Single4字节负值范围:-3.402823E38 - -1.401298E-45正值范围:1.401298E-45 - 3.402823E38Double8字节负值范围:-1.79769313486232E308 - -494065645841247E-324正值范围:4.94065645841247E-

2、324 - 1.79769313486232E308Currency8字节-922337203685477 - 922337203685477Decimal14字节不包括小数时:+/-79228162514264337593543950335包括小数时:+/7.9228162514264337593543950335Date8字节1000年1月1日 - 9999年12月31日Object4字节任何引用对象String(长字符串)10字节+1字节/字符0 - 约20亿String(固定长度)字符串的长度1 - 约65400Varient(数字)16字节Double范围内的任何数值Varient(

3、文本)22字节+1字节/字符数据范围和变长字符串相同变量命名的惯例 replyview数据类型短前缀长前缀ArrayaaryBooleanfbinBytebbitCurrencyccurDoubleddblDate/Timedtdtm/datIntegeriintLongllngObjectoobjSinglesngStringsstrVariantvvar2.你可以使用关键字Dim来声明变量,Dim代表“Dimension”。关键字Dim后面紧跟变量名称,再后面就是数据类型。假设你想让过程显示员工的年龄,你计算年龄之前,必须给过程提供员工的生日。你可以这样做,声明一个叫DateOfBirth

4、的变量:Dim DateOfBirth As Date注意,关键字Dim之后是变量名称(DateOfBirth)。如果你不喜欢这个名称,你可以自由地改为其它的,只有你想用的名称不是VBA关键字之一就行。关键字As以及后面的表31其中的一个数据类型,明确了该变量的数据类型。数据类型Date告诉VB变量DateOfBirth将会储存日期。要储存员工的年龄,按下面方式声明变量Age:Dim Age As Integer变量Age将会储存今天和该员工生日之间年数的数字。因为年龄显示为整年,所以变量Age就被分配为Integer数据类型。你可能还想要你的程序追踪员工的姓名,因此需要声明另一个变量来保存员

5、工的名和姓:Dim FullName As String因为词语“Name”已经在VBA占用的清单上,在你的VBA程序里使用它的话保证会有错误。将变量命名为FullName并且将它声明为String类型(因为员工姓名是文本),来保存员工姓名。技巧35 隐式声明变量没有用Dim语句来明确声明的变量叫做隐式声明。这些变量自动会被分配一个数据类型Variant。它们可以保存数字,字符串和其它信息类型。你可以通过在你VBA程序的任何地方,简单地赋值给一个变量名称来创建一个变量。例如,你可以按下述方式来隐式声明变量:DaysLeft = 100声明变量被认为是编程的好习惯,因为它使程序可读性增强并且帮助

6、避免某些类型的错误。既然你已经知道了如何声明变量,我们就来看一下使用它的一个程序:Sub AgeCalc( ) variable declaration (变量声明)Dim FullName As String Dim DateOfBirth As Date Dim Age As Integer assign values to variables (赋值给变量)FullName = John Smith DateOfBirth = #01/03/1967# calculate age (计算年龄)Age = Year(Now()-Year(DateOfBirth) print results

7、 to the Immediate window (在立即窗口里打印结果)Debug.Print FullName & is & Age & years old. End Sub(译者:Debug是非常好的工具,它让对象在运行时将结果在立即窗口上显示)变量在程序的开始部分就被声明了,从那里开始,它们就可以使用了。在上面的过程里,每个变量声明在分开的行。如果你想,你也可以同时在一行里声明好几个变量,用逗号分开每个变量,例如:Dim FullName As String, DateOfBirth As Date, Age As Integer 注意,关键字Dim只在变量声明行的开头出现了一次。当V

8、B执行变量声明语句时,它产生了有确切名称的变量,并且占用内存空间来储存它们的值,然后,明确的值被赋给这些变量。如何给变量赋值?变量名称,之后是一个等号,等号的右边是你希望用该变量储存的数据。这里你输入的数据必须是该变量声明的数据类型。文本数据应该使用引号包括起来,而日期需要用井号#包括起来。VB使用DateOfBirth提供的数据来计算员工的年龄,并且将计算结果储存到Age这个变量。员工的姓名和年龄通过指令Debug.Print打印到立即窗口。当程序运行结束后,你必须打开立即窗口来查看结果。我们来看看你声明了错误的数据类型,会发生什么情况。下面的过程是计算一个工作表里的总单元格数目,并且将结果

9、使用一个对话框显示给用户。Sub HowManyCells( ) Dim NumOfCells As Integer NumOfCells = Cells.Count MsgBox The worksheet has & NumOfCells & cells. End Sub错误的数据类型会导致错误。在上面的过程里,当VB尝试将Cells.Count语句的结果赋给变量NumOfCells时失败,Excel显示信息“运行时间错误6溢出”。这个错误的产生原因时变量的无效数据类型,工作表里单元格总数目不在Integer数据范围之内。要更正这个问题,你应该选择一个可以包含一个大数据的数据类型。然而,要

10、快速地解决上面程序遇到的问题,你只要删除变量类型As Integer就行了。当你重新运行这个过程时,VB将给你的变量分配为Variant类型,尽管Variant比其它变量类型使用更多的内存和降低程序运行速度(因为VB不得不做额外的工作区检查变量类型),但是,如果这是在一个简短的程序里,使用Variant的代价也是难以觉察的。技巧36 变量类型是什么?通过下述方法,你可以快速地查明你程序里使用的变量的类型:在变量名称上单击右键,并且从快捷菜单上选择“快速信息”。技巧37 串联你可以将两个或多个字符串结合成为一个新的字符串。这个操作称为串联。你已经在AgeCalc和HowManyCellss过程里

11、看到了串联的例子。串联用&符号在表示。例如,“His name is ” & FirstName将会产生下述字符串:His name is John,或者His name is Michael。人名取决于变量FirstName的内容。注意,在is和结束引号之间有一个空格。字符串的串联也可以使用加号(+)来代表,然而,许多程序员为了消除混淆,宁愿将加号限制于数字的运算1. 获取当前日期Sub getCurrentDate()MsgBox (Date)MsgBox (Time)End Sub2. 判断当前日期和制定工作表单元格日期3. 判断单元格是否是文本格式Sub noky()If Range(

12、a1).NumberFormatLocal ThenMsgBox 不是文本格式!End IfEnd Sub4. SHEETS的CELL和RANGE有什么区别CELLS(y,x)是单个单元格对像,两个参数分别为行和列;Range()则是指一个区域,区域中可以是一个单元格,也可以是多个单元格。VBA中常这样写:Range(cells(y1,x1),cells(y2,x2).Select,就是指选中以cells(y1,x1)和cells(y2,x2)两单元格为对角线的一个区域。赋值的话,如下几句都是赋值的,区别还是一样,Cells()是对一个单元格赋值,而Range()则可以对一个区域的所有单元格赋

13、值: Range(A1:D10).FormulaR1C1 = 10 Range(A1:D10).Value = 100 Range(A13).Value = 1 Cells(13, 1).FormulaR1C1 = 10 Cells(13, 1).Value = 100说不上哪更好,要看你的需求,通常哪个随手就用哪个了。是的,Value在多数时候是可以省略的。如下所示: Range(A1:D9) = 123 Cells(3, 3) = 300 Worksheets(Sheet1).Range(A1) = 3.14159但如下所示的第二个.Value就不能省略,省略的话,不会报错,但是结果不正确。 本示例在 Sheet1 上的单元格区域 A1:D10 中进行循环。如果这些单元格中的某个值小于 0.001,则将其值替换为 0(零)。For Each c in Worksheets(Sheet1).Range(A1:D10) If c.Value 0.001 Then c.Value = 0 End IfNext c有书上有对程序员的忠告,意思是这样的:对可省略又可不省略的关键字,最好不要省略而是写完整。这样既增加程序的可读性,又可避免歧义和错误。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 家庭教育

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com