




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,目录,1:什么是VBA?为什么要学VBA? 2:宏 3:VBA编辑器 4:对象、属性、方法,事件 5:VBA过程 6:数据类型、变量、常量、数组 7:程序语句,1:什么是VBA?为什么要学VBA?,VBA是Visual Basic for Applications的简写,是一种应用程序开发工具。可以用VBA来开发软件产品,来满足软件某些方面的需要。VBA的独特之处在于它由应用程序控制,反过来,它又可以增强该应用程序的功能。微软的office和autocad都有VBA。 我们为什么要学VBA? 如果只需要满足一些普通的工作需求可能永远也不会用到VBA,但在实际应用的过程中,人们的操作却越来越大,需要也越来越高,这时候就需要用VBA来对软件进行二次开发了,VBA可以有效地自定义和扩展软件的功能。 VBA功能很强大,但并不是万能的,也并不是所有工作都需要用VBA来解决,也并不是所有工作用VBA来解决都会很简单,这要根据实际情况而定,有些工作用VBA来解决的话相反会变得很麻烦。,2:宏,宏就是用“VBA”高级程序语言编制出来的程序就叫“宏”。每个软件的宏对话框不是完全一模一样,但是大体是相同的,下面以3DMine软件为例子讲解。,4:对象、属性、方法,事件,对象 VBA与传统语言的重要区别之一就是它是面向对象的。对象是Visual Basic程序设计的核心。事实上,窗体和控件都是对象,数据库也是对象,对象到处都存在。一旦理解如何引用应用程序对象模型中的对象,就能够使用对象及其特性来建立自己的解决方案。对象是为了管理数据和代码的方便而提出的。事实上,在VBA中,对象是封装数据和代码的客体。它是代码和数据的组合,可将它看作单元。每个对象由类来定义。对象具有属性、方法和事件。,属性 属性是一个对象的特性,它定义了对象的特征,诸如大小、颜色或屏幕位置,或某一方面的行为,如对象是否激活或可见。可以通过修改对象的属性值来改变对象的特性。,方法 方法指的是对象能执行的动作。方法是一些系统封装起来的通用过程和函数,以方便用户的调用,对象方法的调用格式为 对象.方法 参数名表,事件 事件是一个对象可以辨认的动作,如C1ick(单击)、DbC1ick(双击)等,系统为每个对象预先定义好了一系列的事件,当在对象上发生了事件后,应用程序就要处理这个事件,而处理的步骤就是事件过程。,5:VBA过程,一个过程就是执行某些动作的代码组合。 VBA过程分Sub过程和Function过程。 1、Sub过程总是以“sub 过程名()”开头,以“End Sub”结尾,一个过程就是执行某项动作的一套指令,Sub过程不返回运行的结果。 2、Function总是以“Function 程序名()”开头,以“End Function”结尾,和Sub过程的区别是Function过程返回程序运行的值,值可以是一个值或一个数组,就像我们的工作表函数,Function过程也就是我们说的自定义函数。 要设计一个过程,其实很简单,把需要的对象收集起来,看看我们要对他们的属性进行怎样的修改?我们需要做什么?需要用什么样的方法?要用哪些事件?收集起来就是一个完整的过程。,6:数据类型、变量、常量、数组,数据类型 VBA支持数据类型包括 Byte、Boolean、Integer、Long、Single、Double、Date、String、Object、Variant ( 默认 ) 和用户定义类型等。,变量 变量的概念 变量是内存中用于存储值的临时存储区域。在使用变量之前,必须先声明它,声明通知VBA使用它的名字和数据类型。 变量名必须以字母字符开头,在同一范围内必须是惟一的,不能超过 255 个字符。可以给变量指定任何名字,但在VBA中应注意以下几点。 1)变量名不能包含下列字符:+、/、*、!、 、 、$、等。 2)变量名不能包含空格,但是可以包含下划线, 声明变量 声明变量有两个作用,一是指定变量的类型,二是指定变量的适用范围(应用程序中可以引用变量的作用域)。 定义变量可以使用Dim语句: Dim 变量名 As 数据类型 在VBA中,所有没用DIM语句显示声明类型的变量都被自动视为Variant数据类型。 我们可以在模块中输入“Option Explict”作为第一句语句来强制声明所有变量。也可以点“工具选项”,在选项对话框里勾选“要求声明变量”。这样,VBA在遇到没有声明的变量名称,该语句将导致程序停止。,定义变量除了可以使用Dim语句外,比较常的还有:static语句,Private语句,Public语句。使用不同的语句定义的变量不同的是它们的作用作用域不同,具体为: (1)如果在一个过程中包含了一个Dim或Static语句,此时声明的变量作用域为此过程,即本地变量。 (2)如果在一个模块的第一个过程之前包含了Dim或Prvate语句,此时声明的变量作用域为此模块里所有的过程,也就是在此模块里所有的过程都可以使用它,即模块作用域下的变量 3)如果在一个模块的第一个过程之前包含了Public语名,此时声明的变量作用域为所有模块,即公有变量。,常量 常量在程序执行期间,它的值总是保持固定。常量可以是数字、字符串,也可以是其他值。每个应用程序都包含一组常量,用户也可以定义新常量。一旦定义了常量,就可以在程序中使用它。VBA支持两种类型的常量,即内置常量和用户定义的常量。 常量声明后,不可以对它进行再赋值。声明常量设定常量的值,需要用Const语句: Const 常量名 As 数据类型 常量的值,数组 数组是具有相同数据类型并且共享一个名字的一组变量的集合。数组也是变量。数组中的元素通过索引数字加以区分。 可以用Dim语句或者Public语句声明数组。 Dim/Public 数组名 (a to b) as 数据类型 a 和b 是数组中元素的个数,数组元素素最小值为a,最大值为b,元素个数为(b-a+1)个,当然,你也可以直接输入个数,此时默认最小索引号为0。 如: Dim myarr(5) As Integer 这个数组的最小元素索引号为0,元素个数为6。 上面定义的只是一维数组,你还可以定义二维、三维、四维. 如: Dim myarr(1 to 5,1 to 10) As Integer 这就是一个二维数组,元素个数为5*1050个。 在程序设计的过程中,定义数组的时候我们可能不能确定数组的元素个数,对数组进行声明后,可以在运行时用ReDim语句重新指定数组的大小。VBA支持的最大维数为60。,7:程序语句 书写程序语句时必须遵循的构造规则称为语法。缺省情况下,在输入语句的过程中,VBA将自动对输入的内容进行语法检查,如果发现错误,将弹出一个信息框提示出错的原因,VBA还会约定对语句进行简单的格式化处理。 与传统的程序设计语言一样,VBA也具有结构化程序设计的3种结构:顺序结构、选择结构和循环结构。VBA包含赋值语句、If语句、Select Case语句、DoLoop语句、ForNext语句、Fox EachNext语句。WhileWend语句、Exit语句和GoTo语句 。,顺序结构 下面示例是指定 InputBox 函数的返回值给变量 yourName。 Sub Question() Dim yourName As String yourName = InputBox(“What is your name?“) MsgBox “Your name is “ & yourName End Sub,选择结构 IF.Then.Else语句 根据条件的值,可使用If.Then.Else语句运行指定的语句或一个语句块。IF.Then.Else语句可以根据需要嵌套多级。然而,为了可读性可能会使用Select Case 语句而不使用多嵌套的If.Then.Else语句。使用If.Then.Else语句可以定义两个可执行的语句块,其中一个块会在条件为True时执行;而另一个块会在条件为False时执行。下列的示例显示了语法: Sub test() Dim x As Double Dim y As Double If x 0 Then y = x + 1 Else y = x End If End Sub,Select Case语句 当一个表达式与几个不同的值相比较时,可以使用Select Case语句来交替使用。在下面的示例中,Select Case语句会计算发送给此过程的参数performance。请注意,每个Case语句可以包含一个以上的值,一个值的范围,或是一个值的组合以及比较运算符。如果Select Case语句与Case语句的任何值不匹配,则可选择Case Else语句运行。下列的示例显示了语法: Function Bonus(performance, salary) Select Case performance Case 1 Bonus = salary * 0.1 Case 2, 3 Bonus = salary * 0.09 Case 4 To 6 Bonus = salary * 0.07 Case Is 8 Bonus = 100 Case Else Bonus = 0 End Select End Function,循环语句 For Each.Next语句 For Each.Next语句会重复一个语句块,而它是作用于集合中的每个对象或是数组中的每个元素。当循环执行一次则Visual Basic会自动设置一个变量。 下面的代码会在数组的每个元素中循环,并且将每个值设置成它的索引变量i的值。下列的示例显示了语法: Dim TestArray(10) As Integer Dim i As Variant For Each i In TestArray TestArray(i) = i Next i,Do.Loop语句 可以使用Do.Loop语句去运行语句的块,而它所用掉的时间是不确定的。当条件为True或直到条件变成True时,此语句会一直重复。 在下面的TestLoop过程中,在进入循环之前检查条件。如果将myNum的值由20替换成9,则循环中的语句将永远不会运行。下列的示例显示了语法: Sub TestLoop() counter = 0 myNum = 20 Do While myNum 10 myNum = myNum - 1 counter = counter + 1 Loop MsgBox “The loop made “ & counter &
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025大气合同封面图片专业摄影及后期处理服务合同
- 2025厕所改造项目环保工程设计合同样本
- 2025年度高原人参果直销采购合同
- 2025版砌墙施工与材料运输合同规范范本
- 2025版玩具类产品保修与售后服务合同
- 2025年度智能宠物担保合同风险解析
- 2025年度企业法律咨询法律顾问服务协议
- 2025版保障性住房商品房预售合同示范协议
- 2025年度事业单位电子商务岗位设置与运营管理合同
- 2025版婚恋行业市场拓展与合作推广合同
- 医院实验室生物安全手册
- 重晶石项目可行性研究报告
- 施工现场民工工资保障措施
- 2025-2026(一)秋季第一学期德育活动安排表
- 工会户外驿站管理办法
- JJF(辽) 565-2025 企业温室气体排放计量器具配备和管理规范 石油化工行业
- 2025国开《茶文化概论》形考作业123456答案
- 检验员培训课件
- 2025年孝感公安局警务辅助人员招聘考试试卷
- 1688运营培训课件
- 森林防火安全培训课件
评论
0/150
提交评论