office开发教程4.docx

上传人:b****2 文档编号:2236099 上传时间:2022-10-28 格式:DOCX 页数:12 大小:113.79KB
下载 相关 举报
office开发教程4.docx_第1页
第1页 / 共12页
office开发教程4.docx_第2页
第2页 / 共12页
office开发教程4.docx_第3页
第3页 / 共12页
office开发教程4.docx_第4页
第4页 / 共12页
office开发教程4.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

office开发教程4.docx

《office开发教程4.docx》由会员分享,可在线阅读,更多相关《office开发教程4.docx(12页珍藏版)》请在冰豆网上搜索。

office开发教程4.docx

office开发教程4

项目四VBA的基本语法

从这个项目开始,我们要全面学习VBA的代码编写知识了。

本项目的主要内容是VBA代码的基本语法知识,包括常量与变量、数据类型、运算符、枚举、数组以及代码书写规范。

其中枚举和数组这两部分其实是由简单数据类型组合的数据类型。

所以本项目的重点就是数据类型与变量。

我们将通过简单示例,逐步学习这些知识,并最后通过一个实训,掌握变量的使用方法,加深对数据类型的理解。

任务一常量与变量

一、标识符

标识符是一种标识变量、常量、过程、函数、类等语言构成单位的符号,利用它可以完成对变量、常量、过程、函数、类等的引用。

命名规则如下:

字母打头,由字母、数字和下划线甚至于汉字(不提倡用汉字)组成,如A987b_23Abc

字符长度可达254个字符,不能与VBA保留字(在VBA中有特定意义的字)重名,如public,private,dim,goto,next,with,integer,single等

二、数据类型

VBA共有12种数据类型,具体见表4-1:

表4-1VBA的数据类型

数据类型

类型说明符(类型标识符)

字节

String

$

字符长度(0-65400)

字节型Byte

1

布尔型Boolean

2

整数型Integer

%

2

长整数型Long

&

4

单精度型Single

!

4

双精度型Double

#

8

日期型Date

8公元100/1/1-9999/12/31

货币型Currency

@

8

小数点型Decimal

14

变体型Variant

以上任意类型,可变

对象型Object

4

此外,用户还可以根据需要自己定义这些类型之外的数据类型,方法如下:

Type数据类型名

        数据类型元素名as类型名

        数据类型元素名as类型名

        ……

EndType

示例1:

定义一个新的日期类型:

      TypeDate_rec

          rYearAsInteger

          rMonthAsStrings*3

          rDayAsInteger

      EndType

自定义数据类型的引用

        Date_rec.rYear=1982 

三、常量与变量

1常量

常量是指在应用程序中其值不发生变化的数据,如:

123、3.14、“student”、2009-1-1等,也就是说常量是具体的数据,还有一种情况是使用一个标识符代表一个常量,这才是我们通常所说的常量。

而当需要存储静态信息时,可以使用常量。

使用常量有两个原因:

(1)常量可以存放数值供程序运行时多次引用而不改变;

(2)使用常量可以增加程序的可读性,例如BookTitle比“office2003应用程序开发”要容易记忆和修改。

要声明常量并设定常量的值,需要使用Const语句。

常量声明后,不能对它赋一个新的数值。

例如,假设需要声明一个常量来保存书本价格,可以使用如下语句:

ConstBOOKPRICEAsLong=23.50

可以在Const语句中可以指定数据类型。

常量的命名惯例是全部字母都用大写,这样就容易区分代码中的变量和常量。

2.变量

变量用于保存在程序运行过程中需要临时保存的值或对象,变量具有不同的类型,例如整型、浮点型(见本项目任务二的数据类型部分),变量可能包含不同的数值,在程序运行时,变量的数值可以改变。

定义变量可以使用Dim语句:

Dim变量名As数据类型

掌握要点:

(1)变量的名称要符合前面讲到的关于标识符的命名规则;

(2)变量定义中要特别注意的一个问题是,VBA的变量定义,每个变量之后必须加“As数据类型”,例如:

DimiAsLong,jAsLong

如果没有提供数据类型,变量将被指定为Variant类型,因为VBA中默认的数据类型是Variant,Variant类型一般来说,要占用更多空间(16字节),运行速度也会更慢一些(根据不同数据类型,从基本无差别到大概慢0.5~1倍)。

对于模块级别的变量,可以使用Public、Private来定义(见后续的关于模块的任务)。

(3)as后面的数据类型,也可以是一个对象名称,这时的变量就成为一个对象变量,它所表示的不是简单的数据

3.变量的作用域:

变量保留其值的这段时间,称为作用域或生存周期。

变量的值可能在整个生存周期都在改变,但它仍然保留着一些值。

当变量失去了范围之后,它也就不再保存着任一个值。

当过程开始运行时,所有的变量都会被初始化。

一个数值变量会初始化成0,变长字符串被初始化成零长度的字符串(""),而定长字符串会被填满ASCII字符码0所表示的字符或是Chr(0)。

Variant变量会被初始化成Empty。

用户定义类型中每一个元素变量会被当成个别变量来做初始化。

当声明一个对象变量(详细介绍见后)时,内存中虽有保留空间,但它的值会被设置成Nothing,直到利用Set语句对它指定一个对象引用。

如果在代码的运行期间,变量的值一直没有改变,则它会继续保有它的初始值直到它丢失范围为止。

Dim语句声明过程的级别变量将保留一个值,直到此过程退出为止。

如果该过程调用其它的过程,则在这些过程正在运行的同时,属于调用者过程的变量也保留它的值。

如果过程的级别变量是用Static关键字来声明的,则只要代码正在任何模块中运行此变量仍会保留它的值。

而当所有的代码都完成运行后,变量会失去它的范围和它的值。

所以它的存活期和模块级别的变量是一样的。

模块级别的变量与静态变量是不同的。

在标准模块或类模块中变量会保留它的值,直到停止运行代码。

在对象类模块中,只要仍有一个属于此对象类的实例存在,则变量会一直保留它的值。

模块级别的变量会一直占用内存资源,直到重新设置它们的值,所以只有在必要时才使用它们。

如果在Sub或Function语句前加上Static关键字,则在此过程中所有过程级别的变量的值被保留在调用期间。

任务二运算符及其优先顺序

一、运算符:

运算符是代表VBA某种运算功能的符号。

分类介绍如下:

    1)赋值运算符=

    2)算术运算符&、+(字符连接符)、+(加)、-(减)、Mod(取余)、\(整除)、*(乘)、/(除)、-(负号)、^(指数)

    3)逻辑运算符Not(非)、And(与)、Or(或)、Xor(异或)、Eqv(相等)、Imp(隐含)

    4)关系运算符=(相同)、<>(不等)、>(大于)、<(小于)、>=(不小于)、<=(不大于)

二、运算符的优先顺序:

当一个表达式牵扯到多个运算符时,就必须考虑运算符的优先顺序。

运算符的优先顺序是指在一个表达式中进行若干操作时,每一部分都会按预先确定的顺序进行计算求解,称这个顺序为运算符的优先顺序。

在表达式中,当运算符不止一种时,要先处理算术运算符,接着处理比较运算符,然

后再处理逻辑运算符。

所有比较运算符的优先顺序都相同;也就是说,要按它们出现的顺

序从左到右进行处理。

而算术运算符和逻辑运算符则必须按下列优先顺序(由上至下)进

行处理(如表4-2所示)。

可以用括号改变优先顺序,强令表达式的某些部分优先运行。

括号内的运算总是优先于括号外的运算。

但是,在括号之内,运算符的优先顺序不变。

赋值运算符的优先顺序最低。

表4-2运算符的优先顺序

算术

比较

逻辑

指数运算(^)

相等(=)

Not

负数(–)

不等(<>)

And

乘法和除法(*、/)

小于(<)

Or

整数除法(\)

大于(>)

Xor

求模运算(Mod)

小于或相等(<=)

Eqv

加法和减法(+、–)

大于或相等(>=)

Imp

字符串连接(&)

LikeIs

任务三枚举类型

枚举类型是一种特殊的数据类型,有时会用到由若干个有限数据元素组成的集合,如一周内的星期一到星期日七个数据元素组成的集合,由三种颜色红、黄、绿组成的集合,一个工作班组内十个职工组成的集合等等,程序中某个变量取值仅限于集合中的元素。

此时,可将这些数据集合定义为枚举类型。

因此,枚举类型是某类数据可能取值的集合,如一周内星期可能取值的集合为:

  {Sun,Mon,Tue,Wed,Thu,Fri,Sat}

该集合可定义为描述星期的枚举类型,该枚举类型共有七个元素,因而用枚举类型定义的枚举变量只能取集合中的某一元素值。

由于枚举类型是导出数据类型,因此,必须先定义枚举类型,然后再用枚举类型定义枚举型变量。

    

定义枚举类型的格式:

[public|private]Enum数据类型名

        成员名[=常数达式]

        成员名[=常数达式]

        ……

    EndEnum

示例2:

定义和使用枚举类型:

PublicEnumDays

          Sun

      Mon

      Tue

      Wed

      Thursday

          Fri

      Sat

EndEnum

使用方法:

    Debug.print“Days.Saturday=”&Days.Saturday

任务四数组

    数组是包含相同数据类型的一组变量的集合,对数组中的单个变量引用通过数组索引下标进行。

在内存中表现为一个连续的内存块,必须用Global或Dim语句来定义。

定义规则如下:

Dim数组名([lowerto]upper[,[lowerto]upper,….])astype;Lower缺省值为0。

二维数组是按行列排列,如XYZ(行,列)。

DimArr(-2to3)asinteger

DimArr(0to8,3to5)asinteger

除了以上固定数组外,VBA还有一种功能强大的动态数组,定义时无大小维数声明;在程序中再利用Redim语句来重新改变数组大小,原来数组内容可以通过加preserve关键字来保留。

如下例:

Dimarray1()asdouble

Redimarray1(5)

Redimarray1(3)=250

Redimarray1(5,10)

任务五字符串

一、两种字符串

字符串是VBA中需要经常处理的一种数据类型,有2种字符串类型:

变长字符串和定长字符串。

变长字符串理论上可以保存大约2G(231)字节的字符串,实际中其保存的字符串长度由内存大小决定;而定长字符串可以保存大约65000(216)长度的字符串。

这2种字符串都可以使用Dim语句来定义,定长字符串只需在其后加一个表示其长度的数字即可。

如:

DimMyStringasString‘变长字符串

DimMyFixedStringasString*25‘定长字符串

二、字符串的操作:

1.字符串变量的赋值:

字符串定义后为空字符串,即没有任何数据的字符串(“”),可以通过以下方式对字符串赋值。

字符串在VBA中用双引号表示。

MyString="Helloworld."

MyFixedString="Thisisafixedstring."

MyEmptyString=""

定长字符串必须是其确定的长度,如果赋值时长度过长或过短,则自动以空格添满或截断。

2.字符串的连接

字符串的连接可以使用“&”或者“+”,

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1