VBA基本语法.doc_第1页
VBA基本语法.doc_第2页
VBA基本语法.doc_第3页
VBA基本语法.doc_第4页
VBA基本语法.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基本语法1、标识符:字母开都,字母、数字和下划线组成。如 A5678_9876HJ,小于40个字符,Excel2002以上中文版等,可以用汉字且长度可达254个字符。2、运算符:(1)赋值运算符 =(2)数学运算符: &、+ (字符连接符)、+(加)、-(减)、*(乘)、/(除)、Mod(取余)、(整除)、-(负号)、(指数)(3)逻辑运算符:Not(非)、And(与)、Or(或)、Xor(异或)、Eqv(相等)、Imp(隐含)(4)关系运算符: = (相等)、(不等)、(大于)、=(不小于)、=(不大于)、Like、Is(5)位运算符 Not(逻辑非)、And(逻辑与)、Or(逻辑或)、Xor(逻辑异或)、Eqv(逻辑等)、Imp(隐含)3、数据类型:VBA共有12种数据类型,具体见下表,此外用户还可以根据以下类型用Type自定义数据类型。数据类型类型标识符字节字符串型 String$字符长度(0-65400)字节型 Byte无1布尔型 Boolean无2整数型 Integer%2长整数型 Long&4单精度型 Single!4双精度型 Double#8日期型 Date无8 公元100/1/1-9999/12/31货币型 Currency8小数点型 Decimal无14变体型 Variant无以上任意类型,可变对象型 Object无44、变量与常量(1)VBA允许使用未定义的变量,默认是变体变量Variant。(2)在模块通用说明部份,加入 Option Explicit 语句可以强迫用户进行变量定义。(3)变量定义语句及变量作用域Dim变量 as 类型定义为局部变量如 DimxyzasintegerPrivate变量 as 类型定义为私有变量如 Privatexyzas bytePublic变量 as 类型定义为公有变量如 Publicxyzas singleGlobal变量 as 类型定义为全局变量如 Globlalxyz asdateStatic变量 as 类型定义为静态变量如 Staticxyzas double一般变量作用域的原则是,那部份定义就在那部份起作用,模块中定义则在该模块那作用。(4)常量为变量的一种特例,用Const定义,且定义时赋值,程序中不能改变值,作用域也如同变量作用域。如下定义:Const Pi=3.1415926 as single5、数组在内存中表现为一个连续的内存块,必须用Global或Dim语句来定义。定义规则如下:Dim 数组名(lower to upper , lower to upper, .) as type ;Lower缺省值为0。二维数组是按行列排列,如XYZ(行,列)。除了以上固定数组外,VBA还有一种功能强大的动态数组,定义时无大小维数声明;在程序中再利用Redim语句来重新改变数组大小,原来数组内容可以通过加preserve关键字来保留。如下例:Dim array1() as double : Redim array1(5) : array1(3)=250 : Redim preserve array1(5,10)6、注释注释语句是用来说明程序中某些语句的功能和作用;VBA中有两种方法标识为注释语句。单引号 ;如:定义全局变量;可以位于别的语句之尾,也可单独一行Rem ;如:Rem 定义全局变量;只能单独一行。7、书写规范(1)VBA不区分标识符的字母大小写,一律认为是小写字母;(2)一行可以书写多条语句,各语句之间以冒号 : 分开;(3)一条语句可以多行书写,以空格加下划线 _ 来标识下行为续行;(4)标识符最好能简洁明了,不造成歧义。语句1、判断语句(1)If Then Else 语句If condition Then statementsElse elsestatementsIfThenIfThen语句有几种形式分别用于不同的情况:当只有一个条件时,可使用下面的结构:IfThenElse其中,Else子句可选。如果该语句不在同一行中,则应在后面加上EndIf语句,即:IfThen指令EndIf或:IfThen指令Else指令EndIf当条件为真时,执行Then后面的语句并结束IfThen语句的执行,否则执行Else后面的语句或结束IfThen语句的执行。当有两个或多个条件时,可使用嵌套的IfThen结构:IfThen指令ElseIfThen指令Else指令EndIf上面只是两层嵌套,可以根据情况使用多层嵌套。当条件为真时,执行Then后面的语句并结束IfThen语句的执行,否则判断条件1,当条件1为真时,执行Then后面的语句并结束IfThen语句的执行,否则执行Else后面的指令。(2)Select Case语句当需要作出三种或三种以上的条件判断时,最后使用SelectCase语句。其基本语法为:SelectCaseCase条件表达式1指令Case条件表达式2指令CaseElse指令EndSelect例如:Select Case PidCase “A102”Price = 102Case “A103”Price = 103Case ElsePrice = 000End Select(3)Choose 函数choose(index, choce-1,choice-2,choice-n),可以用来选择自变量串列中的一个值,并将其返回,index 必要参数,数值表达式或字段,它的运算结果是一个数值,且界于 1 和可选择的项目数之间。choice 必要参数,Variant表达式,包含可选择项目的其中之一。如: GetChoice = Choose(Ind, Speedy, United, Federal)(4)Switch函数:Switch(expr-1, value-1, expr-2, value-2 _ , expr-n,value-n) switch函数和Choose函数类似,但它是以两个一组的方式返回所要的值,在串列中,最先为TRUE的值会被返回。 expr 必要参数,要加以计算的 Variant 表达式。value 必要参数。如果相关的表达式为 True,则返回此部分的数值或表达式,没有一个表达式为 True,Switch 会返回一个 Null值。2、循环语句(1)For Next循环其语法如下:ForTostep步长指令ExitFor指令Next计数器从开始到结束,反复执行For和Next之间的指令块,除非遇到ExitFor语句,将提前跳出循环。其中,步长和ExitFor语句以及Next后的计数器均为可选项。ForNext循环中可以再包含ForNext循环,即ForNext循环可以嵌套使用。For Words = 10 To 1 Step -1 建立 10 次循环For Chars = 0 To 9 建立 10 次循环MyString = MyString & Chars 将数字添加到字符串中Next Chars Increment counterMyString = MyString & 添加一个空格Next Words(2)For EachNext语句:主要功能是对一个数组或集合对象进行,让所有元素重复执行一次语句For Each element In group Statements Exit for Statements Next element 如1: For Each rang2 In range1 With erior .colorindex=6 .pattern=xlSolid End with Next 这上面一例中用到了 WithEnd With 语句,目的是省去对象多次调用,加快速度;语法为: With object statements End With(3)1)DoWhile循环只有在满足指定的条件时才执行DoWhile循环。有两种形式:第一种形式DoWhile条件指令ExitDo指令Loop当条件满足时执行指令。第二种形式Do指令ExitDo指令LoopWhile条件先执行指令,然后再判断条件,如果条件满足则再次执行指令。其中ExitDo语句表示提前退出指令块。2)DoUntil循环与DoWhile循环一样,也有两种形式;第一种形式DoUntil条件指令ExitDo指令Loop第二种形式Do指令ExitDo指令LoopUntil条件执行指令,直到条件满足时退出循环。3)WhileWend循环其语法为:While指令Wend当条件满足时,则执行指令。内部函数1、测试函数IsNumeric(x)是否为数字, 返回Boolean结果,True or FalseIsDate(x)是否是日期, 返回Boolean结果,True or FalseIsEmpty(x)是否为Empty, 返回Boolean结果,True or FalseIsArray(x)指出变量是否为一个数组。IsError(expression)指出表达式是否为一个错误值IsNull(expression)指出表达式是否不包含任何有效数据 (Null)。IsObject(identifier)指出标识符是否表示对象变量2、数学函数Sin(X)、Cos(X)、Tan(X)、Atan(x)三角函数,单位为弧度Log(x) 返回x的自然对数Exp(x)返回 exAbs(x) 返回绝对值Int(number)、Fix(number) 都返回参数的整数部分,区别:Int 将 -8.4 转换成 -9,而 Fix 将-8.4 转换成 -8Sgn(number) 返回一个 Variant (Integer),指出参数的正负号Sqr(number) 返回一个 Double,指定参数的平方根VarType(varname) 返回一个 Integer,指出变量的子类型Rnd(x)返回0-1之间的单精度数据,x为随机种子3、字符串函数Trim(string)去掉string左右两端空白Ltrim(string)去掉string左端空白Rtrim(string)去掉string右端空白Len(string)计算string长度Left(string, x)取string左段x个字符组成的字符串Right(string, x)取string右段x个字符组成的字符串Mid(string, start,x)取string从start位开始的x个字符组成的字符串Ucase(string)转换为大写Lcase(string)转换为小写Space(x)返回x个空白的字符串Asc(string)返回一个 integer,代表字符串中首字母的字符代码Chr(charcode)返回 string,其中包含有与指定的字符代码相关的字符4、转换函数CBool(expression)转换为Boolean型CByte(expression)转换为Byte型CCur(expression)转换为Currency型CDate(expression)转换为Date型CDbl(expression)转换为Double型CDec(expression)转换为Decemal型CInt(expression)转换为Integer型CLng(expression)转换为Long型CSng(expression)转换为Single型CStr(expression)转换为String型CVar(expression)转换为Variant型Val(string)转换为数据型Str(number)转换为String5、时间函数Now返回一个 Variant (Date),根据计算机系统设置的日期和时间来指定日期和时间。Date返回包含系统日期的 Variant (Date)。Time返回一个指明当前系统时间的 Variant (Date)。Timer返回一个 Single,代表从午夜开始到现在经过的秒数。TimeSerial(hour, minute, second)返回一个 Variant (Date),包含具有具体时、分、秒的时间。DateDiff(interval, date1, date2, firstdayofweek, firstweekofyear)返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目Second(time)返回一个 Variant (Integer),其值为 0 到 59 之间的整数,表示一分钟之中的某个秒Minute(time)返回一个 Variant (Integer),其值为 0 到 59 之间的整数,表示一小时中的某分钟Hour(time)返回一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论