【VBA教材】7.数据类型与变量、常量的概念.docx

上传人:rrsccc 文档编号:9878966 上传时间:2021-04-01 格式:DOCX 页数:11 大小:19.51KB
返回 下载 相关 举报
【VBA教材】7.数据类型与变量、常量的概念.docx_第1页
第1页 / 共11页
【VBA教材】7.数据类型与变量、常量的概念.docx_第2页
第2页 / 共11页
【VBA教材】7.数据类型与变量、常量的概念.docx_第3页
第3页 / 共11页
【VBA教材】7.数据类型与变量、常量的概念.docx_第4页
第4页 / 共11页
【VBA教材】7.数据类型与变量、常量的概念.docx_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《【VBA教材】7.数据类型与变量、常量的概念.docx》由会员分享,可在线阅读,更多相关《【VBA教材】7.数据类型与变量、常量的概念.docx(11页珍藏版)》请在三一文库上搜索。

1、【VBA教材】7.数据类型与变量、常量的概念【VBA教材】7.数据类型与变量、常量的概念贡献者:罗刚君日期:2009-05-17 阅读:5271相关标签:pub2007VBA在VBA中,使用最频繁的是变量与常量,而只要出现变量、常量,随之而来的数据类型也是程序员需要深入理解的一个知识点第七、八课对变量、常量与数据类型做简要地介绍,在后续的章节时,读者还可以通过大量的实例来加深读者在变量与数据类型的理解。7.1变量7.1.1变量的概念变量是指在程序的运行过程中随时可以发生变化的量。我们可以对它赋值,甚至可以多次对同一变量赋值。变量是程序中数据的临时存放场所。在代码中可以只使用一个变量,也可以使用

2、多个变量。变量中可以存放单词、数值、日期以及属性。由于变量让你能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字,因此它们十分有用。变量可以保存程序运行时用户输入的数据(如使用InputBox函数在屏幕上显示一个对话框,然后把用户键入的文本保存到变量中)、特定运算的结果以及要在窗体上显示的一段数据等。简而言之,变量是用于跟踪几乎所有类型信息的简单工具。例如以下程序就使用了四个变量,每个变量在程序中改赋值一次,其中,前三个变量限定了其范围,最后一个未限制。程序在最后将结果输出到立即窗口。_Sub 三角形()Dim a As Integer, b As Integer, c As In

3、teger, 周长a = 10b = 20c = 15周长 = a + b + cDebug.Print 周长End Sub_再看一个实例,过程“求和”中包括两个变量,每个变量的值改变10次,最后将变量a的值输出到立即窗口。_Sub 求和()Dim a As Long, cell As RangeFor Each cell In Range(A1:A10)a = a + cellNext cellDebug.Print aEnd Sub_变量相当于Excel工作表中使用公式时建立的辅助区,只不过它是将值存在内存中,供用户随时调用。7.1.2变量的优点在VBA中,变量主要有三个用途:简化代码假设

4、某个对象或者表达式在一个Sub过程或者多个Sub过程中多次出现,而该表达式或者对象的代码很长,那么可以定义一个更短且有意义的名称来取代它。例如以下两个过程,A过程直接引用对象,B过程使用了变量:_Sub A() 直接引用对象If ThisWorkbook.Sheets(3).Range(A5).Value ThisWorkbook.Sheets(3).Range(A5).Offset(0, 1) = 不及格ElseIf ThisWorkbook.Sheets(3).Range(A5).Value 90 ThenThisWorkbook.Sheets(3).Range(A5).Offset(0,

5、 1) = 优秀ElseThisWorkbook.Sheets(3).Range(A5).Offset(0, 1) = 及格End IfEnd Sub_Sub B()用变量取代对象Dim rng声明一个变量Set rng = ThisWorkbook.Sheets(3).Range(A5) 将对象赋与变量If rng rng.Offset(0, 1) = 不及格ElseIf rng 90 Thenrng.Offset(0, 1) = 优秀Elserng.Offset(0, 1) = 及格End IfEnd Sub_从以上两个过程比较,变量对于简化代码有着举足轻重的作用。提高速度变量是将值存入内

6、存中,而VBA读取任何对象的属性值或者计算一个表达式的速度都会远远长于读取内存中数据的时间。正是基于这个特点,当某个对象来表达式多次出现时,尽量使用变量来完成。假设表达式“Cells(2, 1) * Cells(2, 1) * Cells(2, 1)”表要在某过程中出现100次,那么它会进行100次三个单元格的乘法运算。如果使用变量代替该表达式,那么在过程中仅仅在对变量赋值时计算一次,以后的100次调用,都不再需要计算,而是直接获取变量的值。循环执行在循环语句中必须使用变量,否则无法执行。而循环语句是VBA的各种语句中使用率最高的语句。7.2常量7.2.1常量的概念常量也称常数,是执行程序时保

7、持常数值、永远不变的命名项目。常数可以是字符串、数值、算术运算符或逻辑运算符的组合。VBA中有很多预定义的常量,例如:“vbYesNo”、“vbSunday”、“vbSunday”等等,用户也可以通过Const 语句定义附加常数。可在代码中的任何地方使用常数代替实际的值。7.2.2常量的用途常量的主要用于取一个固定不变的值,再参与过程。在两种情况下可以使用常量:某个值多次出现在过程中,如果某个值多次出现,那么可以使用常量来取代该值参与运算,它的优点是方便编辑、修改。例如某值为12345678在一个过程或者多个过程中分别出现20次,如果用户需要修改这个值为87654321时,需要修改20次。但是

8、如果使用常量来取代它,只需要对常量的赋值语句修改一次即可,从而提升工作效率,也提升了准确度。某个值较长,不便于输入或者记忆如果一个数值在过程中出现多次,且该值较长,如3.1415926,那么可以利用常量A或者Pi等等字符来取代它,以后录入代码时只需要录入A或者Pi,而不是3.1415926.可见使用常量可以让代码的输入效率更高,同时也会提升准确度。7.3数据类型数据类型就是一类数据的集合。它决定变量或者常的占用空间及种类。在程序中使用什么样的数据类型要根据实际情况而定,既不要浪费存储空间有不要丢失数据。例如变量的值需要在1-100之间变量,就要用BYTE,而不用long型,BYTE可以使程序占

9、用的空间更小,运算速度更快。数据使类型掌握不好,可以导致两种结果:程序出错、效率很差。7.3.1从实例看变量与数据类型实例,计算a1:a10中的数据和及空白单元格个数_Sub TEST()Dim SUMS As Long, CELL As Range, I As Byte, MYSTR As StringFor Each CELL In Range(A1:A10)If VBA.IsNumeric(CELL) Then SUMS = SUMS + CELL Else MYSTR = MYSTR & CELLIf CELL = Then I = I + 1Next CELLDebug.Print

10、A1:A10中有空白单元格 & I & 个Debug.Print A1:A10中数据和为:; SUMSDebug.Print A1:A10中文本为:; MYSTREnd Sub_本程序中使用了四个变量,而四个变量分别有这种类型,见表7-1所示:表7-1变量及其类型变量数据类型Sums LongCell RangeI ByteMystr String其中 Long(长整型)变量存储为 32 位(4 个字节)有符号的数值形式,其范围从 -2,147,483,648 到 2,147,483,647。Long 的类型声明字符为和号 (&)。Range表示当前变量是单元格对象;Byte表示当前表只能在0

11、-255之间变化;Byte 变量存储为单精度型、无符号整型、8 位(1个字节)的数值形式。String字符串有两种:变长与定长的字符串。变长字符串最多可包含大约 20 亿 ( 231)个字符。定长字符串可包含 1 到大约 64K ( 216 ) 个字符。假设工作表数据如图1-1所示,则该过程运算结果见图1-2所示。图7-1 工作表数据图7-2 运算结果7.4VBA数据类型说明及其标识符在编写VBA程序并声明变量时,用户可以指定其数据类型,也可以不指定数据类型。如果用户不指定数据类型则VBA会默认将其看成变体型Variant,而在行殊情况下根据实现需要还可以自动转换成相应的其它数据类型然后让VB

12、A自己转换数据类型会使过程的执行更低,也就是利用慢速度换顾取方便,这对于一个程序员来说是不可取的。在编写程序时,应该根据需要强制指定一种数据类型。以下是Excel 中变量的类型及其标识符。数据类型类型标识符数据范围占用字节数字符串型String $变长字符串最多可包含大约 20 亿 ( 231)个字符:定长字符串可包含 1 到大约 64K ( 216 ) 个字符。字节型 Byte无正整型 0255 。1字节布尔型Boolean 无True(-1) 或False(0)2字节整数型Integer%从-32,768 到 32,767 之间的数字,小数部分四舍五入。2字节长整数型Long&从 -2,1

13、47,483,648 到 2,147,483,647。4字节单精度型Single !对于负数,其范围为 -3.402823E38 到 -1.401298E-45;对于正数,其范围为 1.401298E-45 到 3.402823E38。4字节双精度型#对于负数,其范围为 -1.79769313486231E308 到 -8字节Double 4.94065645841247E-324;对于正数,其范围为 4.94065645841247E-324 到1.79769313486232E308。日期型 Date无日期范围从 100 年 1 月 1 日到 9999 年 12 月 31 日;而时间可以从

14、 0:00:00 到 23:59:59。8字节货币型Currency 从 -922,337,203,685,477.5808 到922,337,203,685,477.5807。8字节小数点型Decimal 无对于没有小数点的数字,其范围是 +/-79,228,162,514,264,337,593,543,950,335;对于有 28 个小数位的数而言,其范围是 +/-7.9228162514264337593543950335。Decimal 的最小非零数值可表示为0.0000000000000000000000000001。变体型Variant 无除了定长 String 数据及用户定义类型外,可以包含任何种类的数据。对象型Object 无利用 Set 语句,声明为 Object 的变量可以赋值为任何对象的引用。4字节

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1