



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选文档VBA的运算符和表达式本文从广义的角度将VBA的运算符进行了全面的归纳和总结,包括通常意义上的算术运算符、连接运算符、比较运算符和规律运算符,还包括了赋值运算符、点运算符以及Like运算符、AddressOf运算符等。同时,概述了表达式的学问。提示 学习是需要思考和实践的,只有举一反三,才能真正理解和把握。由于VBA的一些运算符涉及到较强的规律关系,您在阅读本文时,可以不断思考它们之间的规律关系。同时,您可以在VBE编辑器的模块中测试本文中的一些语句和示例,以加深生疏。在使用VBA编程时,您肯定会经常使用到VBA运算符,它是VBA程序的重要组成部分。在本文中,我将运算符分为两大类,一类
2、是通常意义上的运算符,即:算术运算符、连接运算符、比较运算符和规律运算符;另一类是与语句相关的运算符,即:赋值运算符和点运算符。此外,还简略地介绍一下Like运算符和AddressOf运算符。您通过使用运算符,对VBA各种元素进行连接,或者完成一些运算以形成了VBA表达式或语句。再进一步说,表达式是数字、字符串、常量、变量、对象成员、以及运算符的组合。算术运算符和表达式 算术运算符包括+(加法运算符)、- (减法运算符)、/ (除法运算符)、(整除运算符)、Mod(取模运算符)、(乘幂运算符),下面逐一进行介绍。+ 加法运算符。形成数值表达式,并将数值或数值表达式相加。也可用于连接两个字符串变
3、量,但建议用连接运算符进行连接。例如,结果=表达式1+表达式2。- 减法运算符。形成数值表达式,将数值或数值表达式相减。也可用在数值之前,用于表示负数。例如,结果=表达式1-表达式2。* 乘法运算符。形成数值表达式,将数值或数值表达式相乘。例如,结果=表达式1*表达式2。/ 除法运算符。形成数值表达式,将两个数值或数值表达式相除,其中除数不能为零,否则会得到一个错误。例如,结果=表达式1/表达式2。 整除运算符。将两个数值或数值表达式相除,并返回一个整数,即舍掉余数或者小数部分。例如,结果=表达式1表达式2。例如,73的值为2。Mod 取模运算符。将两个数值或数值表达式相除,并只返回余数。例如
4、,结果=表达式1 Mod 表达式2。例如,7 Mod 3的值为1。 乘幂运算符。计算数值或数值表达式的乘幂。例如,结果=数值 指数。 算术运算符的优先挨次算术运算符的优先挨次依次为:乘幂运算符()乘法和除法运算符(*、/,两者没有优先挨次)整除运算符()取模运算符(Mod)加法和减法运算符(+、-,两者没有优先挨次)。若在同一代码中多次使用同一个算术运算符,则从左到右运算。使用括号可以转变优先挨次。连接运算符和表达式& 连接运算符,用于连接字符串。它能把一些字符串变量连接在一起,形成一个新的字符串。在进行连接运算之前,任何非字符串变量或表达式都转换为字符串。例如,结果=字符串1&
5、;字符串2,其结果的数据类型为String类型。+ 混合连接运算符,它运用很机敏,但会与加法运算符相混,给您的阅读带来不便。例如,结果=表达式1+表达式2,其结果的数据类型取决于表达式的数据类型。下面对这两种连接运算符进行测试,测试表达式为: 结果=表达式1+表达式2当两个表达式都是数值数据时,用&运算符会将两个数值数据连接,如5 & 1连接后为51,但用+运算符后,会将两数值相加得到其结果,如5+1进行连接后为6。当两个表达式都是字符串(Sting)时,将对两个字符串进行连接为一个字符串。当两个表达式为空时,+运算符的结果为0,而&
6、运算符的结果为Null值。当一个表达式为数值类型数据,另一个表达式为字符串类型数据时,+运算符将产生类型不匹配的错误,而&运算符则将两个表达式连接。未声明变量时,当一个表达式为数字,另一个表达式为字母时,+运算符和&运算符的结果均为数字,如j=7,k=student,i=j+k与i=j&k的结果均为7。当两个表达式都为空时,+运算符结果为0,而&运算符结果为Null值。提示 您可以在VBE中调试,看看它们在各种状况下的区分。比较运算符和表达式 比较运算符包括<(小于)、>(大于)、=(等于)、>=(大于或等于)、<=(小于或等于)、<
7、;>(不等于),用于数据元素的比较,其一般的语法为: 结果=表达式1 <比较运算符> 表达式2结果为True(1)、False(0)或者为Null。其中比较运算符可以单独使用,也可以两两结合使用。假如表达式1或者表达式2本身为Null时才会产生Null的结果。下面结合上述语法,对这些比较运算产生的结果为True或False时所需要的条件进行说明:> 表达式1大于并且不等于表达式2时,其结果为True;否则,为False。< 表达式1小于并且不等于表达式2时,其结果为True;否则,为False。= 表达式1等于表达式2时,其结果
8、为True;否则,为False。>= 表达式1大于或者等于表达式2时,其结果为True;否则,为False。<= 表达式1小于或者等于表达式2时,其结果为True;否则,为False。<> 表达式1不等于表达式2时,其结果为True;否则,为False。比较运算符可用于数值比较或字符串变量比较,也可用于数值与字符串的比较。假如其中一个表达式是数值,另一个是字符串,则数值表达式总是“小于”字符串表达式;假如都是字符串,则最大的字符串就是最长的字符串;假如字符串一样长,则小写的大于大写的。还有一个比较运算符,即Is运算符,可用于推断两个对象变量是否指向同一个对象,其语法为:
9、 结果=对象1 Is 对象2假如对象1和对象2都指向同一个对象,其结果为True;否则,结果为False。还可以用Is运算符来推断一个对象变量是否符合要求,例如,条件推断语句If objVar Is Nothing Then 表明,假如对象变量objVar没有对象引用,则为True,执行Then后面的语句。 比较运算符的优先挨次。假如多个比较运算符消灭在同一行代码中,则按从左到右的挨次计算。规律运算符和表达式 规律运算符允许对一个或多个表达式进行运算,并返回一个规律值。VBA的规律运算符包括:And(规律与)、Or(规律或)、Not(规律非)、Eqv(与或)
10、、Imp(蕴含)、Xor(异或)。And 执行规律与运算,即假如表达式1和表达式2都是True,则结果返回True;只要其中一个表达式为False,其结果就是False;假如有表达式为Null,则结果为Null。其语法为:结果=表达式1 And 表达式2例如,If x>1 And y<10 Then,表示假如x的值大于1且y的值小于10时,就执行Then后面的代码。又如,语句MsgBox ActiveSheet.Name=”Sheet2” And Range(“A1”)=1表示假如当前工作表名为Sheet2并且当前工作表上的单元格A1的值为1时,消息框将显示True。Or 执行规律
11、或运算,即假如表达式1或者表达式2为True,或者表达式1和表达式2都为True,则结果为True;只有两个表达式都不是True时,其结果才为False;假如有表达式为Null,则结果也是Null。其语法为: 结果=表达式1 Or 表达式2例如,If x>1 Or y<10 Then,表示假如x的值大于1,或者y的值小于10,则执行Then后面的代码。又如,语句MsgBox Range(“A1”)=1 Or Range(“B1”)=2表示假如当前工作表中的单元格A1中的值为1或者单元格B1中的值为2时,消息框将显示True。Not 对一个表达式进
12、行规律非运算,即假如表达式为True,则Not运算符使该表达式变成False;假如表达式为False,则Not运算符使该表达式变成True;假如表达式为Null,则Not运算符的结果仍旧是Null。其语法为: 结果=Not 表达式例如,If Not IsError(x) Then,假如IsError返回False则执行Then后面的代码,表示x中不包含错误。又如,语句Selection.Font.Bold=Not Selection.Font.Bold,其中Bold属性的值为True或False,使用Not运算符会将值False改为True,将值True改为
13、False,这样可用于切换所选单元格是否“加粗”。这也是VBA程序编写时的一个技巧,我们可以运用Not运算符仿照工具栏“加粗”、“斜体”等按钮的工作模式,如当我们点击“加粗”按钮时,所选单元格中的字体将加粗显示,再次单击“加粗”按钮,单元格中的字体又正常显示了。Eqv 执行与或运算,即推断两个表达式是否相等,当两个表达式都是True或者都是False时,结果返回True;若一个表达式为True而另一个表达式为False时,结果返回False。其语法为: 结果=表达式1 Eqv 表达式2Imp 执行规律蕴含运算,其语法为:
14、结果=表达式1 Imp 表达式2当两个表达式都为True和两个表达式都为False时,其结果为True;当表达式1为True,表达式2为False时,其结果为False;当表达式1为False,表达式2为True时,其结果为True;当表达式1为False,表达式2为Null时,其结果为True;当表达式1为True,表达式2为Null时,其结果为Null;当表达式1为Null,表达式2为True时,其结果为True;当表达式1为Null,表达式2为False时,其结果为Null;当两个表达式都为Null时,其结果为Null。上面的表述可能有点绕口,概括地说,不管表达式1,当表达式2为真时,其
15、结果为True;当两个表达式都为False,或者表达式1为False,表达式2为Null时,其结果为True;当表达式1为True,表达式2为False时,结果为False;其它状况则为Null。Xor 执行规律异或运算,用于推断两个表达式是否不同。若两个表达式都是True或都是False时,其结果就是False;假如只有一个表达式是True,其结果就是True;假如两个表达式中有一个是Null,其结果是Null。其语法为:结果=表达式1 Xor 表达式2 规律运算符的优先挨次规律运算符的优先挨次依次为:NotAndOrXorEqvImp。假如在同一行代码中多次使用相同的规律运算符,则从左到右
16、进行运算。运算符的优先挨次假如您不了解运算符的优先级别(即哪个运算符优先运算,哪个运算符最终才运算),您的表达式可能会消灭意想不到的结果。在前面的小节中,介绍了同一类运算符的优先挨次。假如在一行代码中包括多个运算符,则其进行运算的优先挨次是不相同的。运算符的优先级会影响到表达式的最终结果。当一行代码中包括几类运算符时,其优先挨次为:算术运算符连接运算符比较运算符规律运算符。假如您要转变同类或不同类运算符的优先挨次,可以使用括号,括号内的表达式总比括号外的优先进行运算。Like运算符Like运算符用于推断给定的字符串是否与指定的模式相匹配,其语法为:结果=字符串 Like 模式其中,字符串为要与
17、模式相比较的字符串,假如字符串与指定的模式相匹配,则结果为True;否则,其结果为False。假如字符串或者模式Null,则结果为Null。在模式中可使用一些特殊字符,其它的字符都能与它们相匹配,这些字符有:?代表任意一个字符;*代表0或多个字符;#代表任意一个数字(0-9);charlist代表字符列表中的任意一个字符;!charlist代表不在字符列表中的任意一个字符;代表空字符串(“”)。Charlist将模式中的一组字符与字符串中的一个字符进行匹配,可以包含任何一种字符,包括数字;在Charlist中使用连字号(-)产生一组字符来与字符串中的一个字符相匹配,如A-D与字符串相应位置的A
18、、B、C或D匹配;在Charlist中可以产生多组字符,如A-D H-J;各组字符必需是依据排列挨次消灭的;在Charlist的开头或结尾使用连字号(-)或以与连字号自身相匹配,例如-H-N与连字号(-)或H到N之间的任何字符相匹配;在Charlist中的一个字符或者一组字符前加上!号,表明与该字符或该组字符之外的全部字符匹配,如!H-N与字符H-N范围之外的全部字符匹配;而在外使用!号则只匹配其自身。要使用任何特殊字符作为匹配字符,只需将它放在中即可,例如?表明要与一个问号进行匹配。下面给出一个例子。打开一个工作簿,选择菜单“工具宏Visual Basic编辑器”或按Alt+F11组合键,打
19、开VBE编辑器。在VBE编辑器中,选择菜单“插入用户窗体”,新建一个用户窗体,点击控件工具箱中的“文本框”控件和“按钮”控件,在用户窗体上放置一个“文本框”和一个“按钮”,并在用户窗体中对它们的大小和位置进行合理调整,双击刚创建的“按钮”控件,并输入下面的代码:Private Sub CommandButton1_Click() Dim sEnd As String, sPattern As String sEnd = "in Office" sPattern = "F W*" & sEnd If TextBox1.Text Like sPattern Then MsgBox "输入正确" Else MsgBox "输入错误" End IfEnd Sub本代码中F W*表示字符以F或W开头的字符串,使用&连接符将其与变量sEnd所
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 单人戏曲考试题及答案大全
- 国有通江县五台山林场黄牛养殖开发项目可行性研究报告
- 大学英语考试题及答案
- 中国环己烷二甲醇(CHDM)项目投资计划书
- 大队委换届考试题及答案
- 船厂管工考试题及答案大全
- 伤人事故私了协议书
- 初中新闻考试题及答案
- 市场调研服务协议书
- 急救常识考试试题及答案
- 天津市河西区2024-2025学年八年级下学期期末物理试题(含答案)
- 学堂在线 大唐兴衰 章节测试答案
- 道路养护以及维修方案(3篇)
- 农行审计管理办法
- 工时定额管理办法
- 玫瑰主题咖啡馆创新创业项目商业计划书
- 邮储银行招聘考试笔试试题集及参考答案
- 2025年营养师考试题及答案
- 建立分公司策划方案
- 《人工神经网络设计 》 课件 第3章 感知器
- 椎管内肿瘤护理查房讲课件
评论
0/150
提交评论