《VBA培训课程(共107张).pptx》由会员分享,可在线阅读,更多相关《VBA培训课程(共107张).pptx(107页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 ()培训()培训铸管部2006目 录什么是对象、属性和方法数据类型、变量和常量赋值语句、运算符和内部函数内部对话框程序流程控制语句模块、子程序和函数用户窗体和控件自定义菜单与工具条若干实例0 什么是像 、及其它的应用程序一样,是一种应用程序开发工具,但是与它们不同,是唯一由其他应用程序控制的应用程序开发工具,它可以增强其他应用程序的功能。实际上是建立在中的标准宏语言,可以有效的自定义和扩展那些使用了应用程序的功能。实际上是的派生体,为了在应用程序中使用方便而有针对性的优化和设置了。1 对象、属性和方法 目前,面向对象程序设计( ,简称)被广泛使用,主要是因为它采用了模块化设计,可以实现四个目
2、标:可检验的();可修正的();可重复使用的();可移植的()。 或说具有三个基本概念的支持:数据封装、继承性和多态性。在中,代码对象是一个容器(),容器中包括数据和处理该数据的代码,即对象的属性和方法都包含在对象的定义中。 代码对象具有属性和方法。属性()是对象的外部可见数据();方法()是对象处理数据的过程。其中,外部可见数据是在对象外部可以存取的数据,属性可以是对象处理的数据,或者用来控制对象的行为和外观。当执行一个方法时,该方法仅处理对象所包含的属性,一个对象的方法不能直接改变另一个对象的属性值,但是一个对象的方法可以请求其他对象自行改变它们自己的属性值。一个对象可以基于对另一个对象的
3、描述。 代码对象还可以是其他较大代码对象的组成部分,即对象可以组合。当一个对象是另一个对象的组成部分时,后者就要继承()前者的所有属性和方法。为存取组合对象的属性和方法,书写格式必须从最外层容器对象开始向内层写,直至需要存取属性和方法的那个对象,对象名间用小数点分隔。许多对象可以具有相同的方法,不同对象调用该方法都会产生正确的操作。每个对象是一个特定的、唯一的事物。一个类()则是指具有特定类型的所有对象,所以类是对象定义的最高级别,可以用一个类来创建一个对象。 对象包括工作表、工作簿、图表和单元格区域等,菜单、工具条以及工作表函数库也都是对象。对象集合在中使用集合()来存取大多数工作表对象。如
4、,等。格式为: 集合(“成员名称”);或:集合(“整数值”),其中整数值表示成员位置序号。 如工作簿名为,且工作表位于该工作簿的第二个表,则下列代码用于存取同一工作表。(“”)(“”)(“”)(2)v获取集合的信息 ()(1)(B2) = 属性是统计该集合中成员的个数(1)(B3) = 属性包含集合的父对象的名称(1)(B4) = (3) v在集合中增加、删去成员 在工作表集合的开头添加一个缺省类型的新工作表(3) 删去第3个工作表q用对象存取单元格q 工作表上的单个单元格并不是对象,工作表上的单元格是通过对象来存取的。q 一个对象是工作表上的任意单元格或单元格的矩形组。通过函数将互不连通的单
5、元格组合成一个对象。q 生成对象的三种可用方法是:q方法q方法q方法v方法v 方法是用途最广的一种方法。 ()(1)(B1) = 1 单个单元格(1)(D2, B2) = 2 矩形区域(1)(B33) = 3 矩形区域(1)(B456) = 4 三个孤立的单元格(1)(“B77”), (1)(“C8”) = 5 两个不连通的区域(1)(B999) = 6 两个不连通的区域 注意:矩形区域的表示方法有二: (“列1行1:列2行2”) (“列1行1”,“列2行2”)注意:若把方法用于对象,不管单元格引用是否是直接单元格名,方法对对象的引用都是相对于对象的左上角的。例如:(B1)(A2) = 1 实
6、际上是B2单元格的值为1。v 方法v 方法的格式为:v (i, j) v 其中:i表示单元格行号;v j表示列号,有时j可以用“字母”替代。v 注意事项同上。v方法v 方法 是专门相对于当前单元格创建的对象,格式为:v(“”)或()()v 其中:m表示行偏移量;v n表示列偏移量。v相对偏移方法比较:(“B4”) (4,2) (3,1)v方法的简写v 方法可以采用一种简写的形式。如:v (1)(“E7”)v 可简写为: (1).E7q活动属性q拥有应用软件对象的几个特殊属性,即其活动属性( )。活动属性的取值总是取决于特定类的当前活动对象,活动对象可以是工作簿和工作表重叠窗口中的最顶层的表,或
7、是对象的活动单元格,或是图形对象中被选中的对象。活动属性经常和方法、方法一起使用。用以选择一个单元格区域或一个表;用以激活当前选择对象中的一个单个单元格或选择一个表(此时同于)。 属性值取决于当前显示的工作簿;属性值取决于活动工作簿中最顶层的表,可以是工作表()、图表()、宏表( )或模块表( )。属性值取决于一单个单元格对象。属性与属性紧密相关,但属性值取决于所有被选中的单元格,而不是单个活动单元格。 ()(1) 活动工作簿的第一张工作表被选中(B3) 活动工作表的单个单元格B3被选中 = 23 活动单元格的数值 = 0.00 活动单元格数据格式 = 活动单元格数据位置水平居中 , 4 一种
8、方法,与属性相对应,单元格外框厚的绿色 = 6 单元格背景黄色(“B56”) 活动工作表的一片单元格被选中 = 23 = 0.00 = , 4 = 6(A1) 将活动单元格置于A1 q格式属性q 上例已经引入了格式属性,实际中强烈建议用记录宏的办法获取其格式。q内容属性q 工作表单元格中放入数据有两种途径:一是使用对象的属性;二是使用属性。 (B2)1C1 = 宋 (B3) = 杰 (B4) = 鲲 (B5) = =2*3 (B6)1C1 = -12 (B7) = =2*3 (B8) = 5+2一样的效果一样的效果一样的效果2 数据类型、变量和常量 变量()和数据类型( )决定着数据在计算机内
9、存中的存储方式及存放地点。数据类型是指数据值在内存中的存储方式,包括数据值大小、有效位及是否有小数部分。 中,有11种内部数据类型:布尔型()整数()长整数()单精度浮点数()双精度浮点数()货币()日期()字符串()对象()数组()变体() 创建自定义数据类型:将几个现有的数据类型联合在一起组成一个结构,可能更便于使用。用语句可定义一个数据结构,格式为: 结构名结构内元素1 数据类型结构内元素2 数据类型 注意:不能放在、中,而应单独在最初的变量声明中创建。 q变量是内存中被命名的存储位置,即在内存地址q 和变量名之间建立了一种线性映射关系。v变量名可由字母、数字及标点符号组成。必须以字母打
10、头,且不能包含空格、小数点及类型声明符(#、$、%、&、!)。可以在变量名中使用大写字母,在中并不区别大小写字母。通常将多个词用下划线或大写字母连起来构成具有含义的变量名。v变量的声明v强制声明变量:应在每个模块的开始处加入一条 ,这样程序运行时遇到未定义类型的变量,会显示出错信息。v用语句声明变量,格式有:当没有“ 数据类型”或为“ ”时,意味着该变量为变体类型。 变量名变量名 数据类型数据类型 ,变量名,变量名 数据类型,数据类型,用声明全局变量:声明的变量在应用软件的任何子程序中都是有效的。 定义数组变量:建议用格式: 数组名(数组名(1 21 2) 数据类型数据类型 q定义和使用常量,
11、格式为: 常量名常量名=常数值常数值q变量和常量都有一定的有效作用范围(也称q 作用域)。注意:一旦使用常量,绝不可再给常量赋值。 的有效作用范围为整个模块 z = 15 z的有效作用范围为整个模块,且不可再赋值 1() x x的作用域为该子程序x = 10 = & x 2() & z 说明:在未运行1之前,“ ”。3 赋值语句、运算符和内部函数 定义了变量,即可使用变量进行实际工作。赋值语句 格式为:变量名=表达式 其中:变量名可以是普通变量,数组或对象属性; 表达式可以是数值,也可以是由变量、运 算符、常量和函数组成的公式。 注意对象变量的赋值格式: 变量名 变量名=计算对象值的表达式 (
12、) = (B2) = 2 q运算符q 的基本运算是通过运算符来实现的。q算术运算符q字符串运算符q关系运算符(比较运算符)q逻辑运算符q 运算符说明乘方运算-取非运算*乘运算/除运算整除运算取模运算+加运算-减运算&字符串连接运算相同优先级相同优先级当然,( )是约束运算优先级的更好办法。v常用的算术运算符与字符串运算符(按其优先v 级由高到低顺序)如下:运算符的练习:可在视图/立即窗口中进行,许多程序的试算均可在立即窗口中进行。键入?(或Print)试算运算 运算 1,运算2,;每隔14个字符出一个结果 字符串的连接用“&”或“+”均可 如果改为,显示。因为03,不提倡v关系运算符v关系运算
13、符也称逻辑比较运算符,其结果为或。运算符说明=等于不等于大于=大于或等于相同(仅用于对象)等效于通配符说明:被比较变量中的任一个变量值为非合法值,表达式也将返回。与相当的逻辑测试函数有:函数说明()自变量为数组,返回真()自变量为日期,真()自变量为空字符串,真自变量为错误值,真()自变量为,真()自变量为数值,真自变量为对象,真()调用子程序时判断是否有数值从外部传给可选自变量。没有,真可以和运算符一起使用的通配符:通配符()匹配字符()*任意个字符?任意一个字符#任意一个数字(09)字符表任意一个在字符表中出现的字符!字符表任意一个未在字符表中出现的字符v逻辑运算符(布尔运算符)v逻辑运算
14、符是关系运算符的扩展工具,把若干逻辑比较组合在一起,形成为一个逻辑表达式。运算符说明非或负与或异或蕴含等价ATTFFBTFTFA BFTTFA BTFTTq内部函数q数学函数截断取整函数最大取整函数数学函数中还有两个重要的产生随机数的函数:和()。要说明的是,随机数是计算出来的,初值相同,得到的随机数也相同。建议在一个使用()函数计算随机数的程序中,首先执行一次。用系统时间计算初值,函数初始化随机数发生器使之每次发出的随机数各不相同;()产生随机数:当自变量为负数时,()函数将以该自变量作为初值;当自变量为0,该函数将返回上一个随机数;如果自变量为正数或空,该函数将返回下一个随机数。v字符串函
15、数变为小写字母变为大写字母统计字符串长度寻找字符串或字符位置左边4个字符右边6个字符更换从第13个字符开始的5个字符从第5个字符开始的3个字符在定长字符串中作左对齐调整在定长字符串中作右对齐调整产生6个空格产生6个字符*删除字符串左边空格删除字符串右边空格删除字符串两边空格字符串比较函数:(12)0,二进制码比较形式;1,正文比较形式。取一个字符的AscII码取一个AscII码对应的字符将数值转换为字符串将一个数转换为十六进制的字符串将一个数转换为八进制的字符串和用于定义八进制数和十六进制数。()函数:略去了字符串左侧的空格,并转换字符串直至字符串中的非数字字符;不仅略去了字符串中的其他正文和
16、空格,而且略去了数字字符中间的空格,如(“& o 3 3”)=27将字符串转换为数值v日期、时间及格式函数v数据类型转换函数函数说明转换数据类型为布尔型货币日期双精度浮点数整数长整数单精度浮点数字符串变体错误号4 内部对话框内容概要:消息框()输入框()内部对话框v消息框()v用途:输出简单的错误、警告或提示信息给v 使用者。语法:( () , = + 1 + = ( ?, , ) ?, , “作用同上 自变量含义必要的自变量。作为显示在消息框中的信息字符串。选择性自变量。数值运算式,用来指出显示按钮的数目及形式、使用的图标样式、缺省按钮以及消息框的强制响应等。如果没有指定,则的默认值是0。选
17、择性自变量。显示在对话框标题列中的字符串运算式。如果没有,则将应用程序的名称放在标题列中。选择性自变量。用来识别提供给对话框文字感应说明的说明文档的字符串运算式。如果指定了,则也必须指定。选择性自变量。数值运算式,由说明文档的作者来指定适当的说明主题代码。如果指定,则也必须指定。其中,自变量的设定影响深远,其设定值可概分为四组:第一组值(0-5)用来决定对话框中按钮的形式与数目;第二组值(16,32,48,64)用来决定图标的样式;第三组(0,256,512)决定出哪一个按钮是缺省按钮;而第四组(0,4096)则决定消息框的强制响应性。第1组(按钮设定):决定消息框中的按钮样式。常数值说明0只
18、显示“确定” 按钮1显示“确定”和“取消”按钮2显示“异常终止”、“重试”和“略过”按钮3显示“是”、“否”和“取消”按钮4显示“式”和“否”5显示“重试”和“取消”第2组(图标设定):决定消息框中的图标样式。常数值说明16显示32显示48显示64显示第3组(缺省按钮设定): 决定何者为缺省按钮。常数值说明10以第一个按钮为缺省按钮2256以第二个按钮为缺省按钮3512以第三个按钮为缺省按钮4768以第四个按钮为缺省按钮第4组(类型设定):决定对话框的类型(强制响应性)。常数值说明0应用程序强制响应;使用者必须先响应此消息框,才能在目前的程序中继续工作。4096系统强制响应;所有的应用程序都会
19、暂停,直到使用者响应此消息框。说明:表中的“常数” 都是 内定的,便于记忆及识别用; 四组设定值,可从每组数值常数中选一个出来相加(+), 以得到不同效果。也可取其和。 () (4) (0) = (消息框示范, 1 + 64, )(1) = (要终止吗?, 4 + 32 + 256, 2)(2) = (注意! 开课了!, 48 + 4096, )(3) = (示范结束, 2 + 16, ) 1() , = + 2 + + = ( ?, ) 按钮虚框表示缺省按钮图标v ()v 格式:v(,v ) () = (!, 向您问好:, 宋杰鲲) () = (请输入字体, 字体, 宋体) = & 展示:
20、= 您好! = = 20 5 控制程序流程q分支结构q块结构q 结构q非结构化分支q循环和重复结构q循环q重复结构q重复结构q循环q分支结构块结构q块结构1单块结构Option ExplicitFunction thePay(hours As Single, Optional PayRate) As CurrencyConst DefaultRate = 5.25If IsMissing(PayRate) Then PayRate = DefaultRateEnd IfthePay = hours * PayRateEnd Function格式: 逻辑表达式 语句块 例题: () , 1, 2
21、 = 40 = 8.751 = () 只有一个参数,采用缺省值5.252 = (, ) 两个参数 (1, $0.00), (2, $0.00) 在立即窗口通过Run()语句运行程序 2( , , _ ) = 5.25: = 5000 = 500 () = = 0 () = 2 = * + 嵌套不能用If () And ()替代,因为当Sales无值时,无法将其与一个数值比较,类型不匹配,导致出错。v块结构2多块结构v 格式: 逻辑表达式1 语句块1 逻辑表达式2 语句块2 逻辑表达式3 语句块3其它语句 2( , , _ ) = 5.25: = 5000 = 500 () = = 0 () 什
22、么都不再作 = 2 = * + v块结构3从句v 格式: 逻辑表达式1 语句块1 逻辑表达式2 语句块2其它语句其它语句块 2( , _ , ) = 5.25 = 5000 = 500 () = = 0 () 什么都不再作 = 40) ( =7 10 = 0 = 1 = 2 = 3 = 4 ( , , _ , ) , , = 0 = = = * 12 = / 12 = * 6 = / 6 = * 4 = / 4 = * 2 = / 2 = (, , , ) v 结构2v 在上述程序的 语句最后加入 = () 说明:要使用其它错误值信息,如!,可在对象浏览器中选择,察看下的所有常量,如!对应。q
23、分支结构语句q 格式: 行语句标号名或 逻辑表达式 行语句标号名 = = : = * 12 = / 12 : = * 6 = / 6 : = * 4 = / 4 : = * 2 = / 2 : = () : = (, , , ): 注意:某一行语句的标号名必须写在一行语句的开始并用冒号与后面的语句分开。尽可能避免使用非结构化分支语句。q循环和重复结构循环q 格式为: 循环变量=初值 终值 步长(缺省为1)循环体1 循环体2 循环变量 可以没有,它是强制终止循环的语句,执行中遇到该语句,程序将中断循环,到语句的下一语句执行。循环变量是个一般变量,可在循环体中对其修改,但应避免在循环体中修改该变量
24、。 () , , i , j , () 未声明大小的动态数组 = = (, ) 根据实际需要重新确定动态数组大小 = 1 = 1 (, ) = (, ) = 0 i = 1 j = 1 = + (i, j) j i = / ( * ) : & () 说明:循环实际上是已知迭代次数的循环语句。循环和重复结构重复结构 格式为:v开头判断真逻辑条件: 条件循环体1 循环体2v结尾判断真逻辑条件:循环体1 循环体2 条件v开头判断假逻辑条件: 条件循环体1 循环体2v结尾判断假逻辑条件:循环体1 循环体2 条件 (m ) i, t i = 2 m - 1 t = m i t = 0 = (m) & 不
25、是素数 i (t 0) (m = 2) 由于2不作循环,所以应加入这一条件 = (m) & 是素数 (m , n ) 求经过多少年后,父母的年龄是子女的2倍 f y, t f = 0y = 0 m n t = m: m = n: n = t (m = 2 * n) (f 0) m = m + 1: n = n + 1: y = y + 1 y 50 f = 1 f = 0 = 需要 & y & 年, & m & 是 & n & 的2倍 = 输入的年龄差距过大(小)! q循环和重复结构重复结构q 格式为: 条件循环体 (m , n )求两个数的最大公约数,用辗转相除法 r, t m n t =
26、m: m = n: n = t r = m n r 0 m = n: n = r: r = m n = n q循环和重复结构循环q 格式为: 循环体1 循环体2 () 求数组元素之和 , = 0 = + = 0( () , , = 1 () = (), 2) _ = () = * = * 0 = 6 函数和子程序v子程序是指最小的、可用计算机程序,格式为: 程序名(自变量表).子程序体. 子程序的自变量表将被调子程序与调用子程序连接起来。除了全局变量以外,其他所需数值都必须通过自变量表进行传递。 v子程序类型v普通子程序( )v 普通子程序实际上指的是标准程序,不改变子程序之外的任何东西,仅用
27、来计算数值、显示文档、给其他程序发送消息或处理磁盘文件。v命令字程序( )v 命令子程序相当于菜单命令,用于扩充功能,通常不带自变量,如需用户输入数据,可直接通过对话框获取。v事件子程序( )v 事件子程序是与特定事件联系在一起的,当事件发生时,子程序才被执行。注意,事件子程序也可以是命令子程序或普通子程序。v如要在用户打开或关闭工作表时自动运行一个子程序,可以命名该子程序为或。如可以使用属性,在用户释放()一个表时执行事件子程序(释放一个表的办法是关闭该表,或激活另一个表)。函数() 函数可以视为子程序的一部分,也有其特殊的地方。(“1”)“”如要在用户激活一个工作表时执行一个事件子程序,可
28、将子程序名赋给对应的工作表对象的属性,例如下列语句在用户激活1表时运行程序。v子程序调用v在同一模块中调用子程序v在不同模块中调用子程序v(3)在不同工作表中调用子程序v(4)私有模块和私有子程序,分别用下图表示。 7 窗体和控件复选框命令按钮选项按钮列表框旋转按钮滚动条图像复合框切换按钮框架标签文字框v控件常用公共属性v v被设为一个单字符字符串,代表使得键盘可以操作控件的那个键。键盘操作会导致识别控件事件。v缺省设置:(空)v示例:v1“C”v命令按钮1的属性,指的是也可激发事件。v v被设为一个布尔值(或),代表控件的属性和属性是否可以被 (图形交互设备系统)自动调整大小。v缺省设置:v
29、被设为一个代码,代表解释器将赋给控件背景(不是前台文本)颜色。 被设为一个布尔值,代表控件的背景是否是不透明的,被设为一个布尔值,代表控件的背景是否是不透明的, 或者是一种原色(代表透明)或者是一种原色(代表透明) 缺省设置:缺省设置: 被设为一个代码,代表解释器赋给控件边框的颜色。被设为一个代码,代表解释器赋给控件边框的颜色。 被设为一个整数标识,代表是否赋给控件一个单像素被设为一个整数标识,代表是否赋给控件一个单像素 宽的、给定属性的实线。宽的、给定属性的实线。 可能设置:可能设置: 0(缺省值)赋给控件标准边框,对于框架控件而言,(缺省值)赋给控件标准边框,对于框架控件而言, 可能根本就
30、没有变框。可能根本就没有变框。 1赋给控件一条单像素宽的边框线,它的颜色由当赋给控件一条单像素宽的边框线,它的颜色由当 前属性设置定义。前属性设置定义。 在设计期间被设为一个含有文本的子母数字式的字符在设计期间被设为一个含有文本的子母数字式的字符串串 ,当鼠标指针在控件上作短暂停留时,不用按下鼠标,当鼠标指针在控件上作短暂停留时,不用按下鼠标按按 钮用户就可以看到这个文本。钮用户就可以看到这个文本。 一个布尔值,代表控件是否是活动的,以及控件是否一个布尔值,代表控件是否是活动的,以及控件是否在在 接受用户事件。接受用户事件。 被设为一个对象,它代表与控件相关的所有文本的被设为一个对象,它代表与
31、控件相关的所有文本的 字体的属性。字体的属性。 被设为一个代码,代表控件的前景色,与后被设为一个代码,代表控件的前景色,与后 景色相对应。景色相对应。 被设为控件(或者包围控件的矩形区域)上边缘和下被设为控件(或者包围控件的矩形区域)上边缘和下边边 缘之间的距离。缘之间的距离。 被设为一个长整型数,代表与窗体模块相关的被设为一个长整型数,代表与窗体模块相关的 帮助文件所使用的号,以说明控件的使用。帮助文件所使用的号,以说明控件的使用。 控件的左上角与包含这个控件的对象的左边界之间的控件的左上角与包含这个控件的对象的左边界之间的 距离。这个包含控件的对象一般是。距离。这个包含控件的对象一般是。
32、被设为一个布尔值,表示是否防止用户把光标放置在被设为一个布尔值,表示是否防止用户把光标放置在 控件里。控件里。 缺省值:缺省值: 在设计期间,当控件的被设置为在设计期间,当控件的被设置为99时,时, 被设为一个图形的文件名。在指针处于控被设为一个图形的文件名。在指针处于控 件上时,这个图形将取代鼠标指针图形来显示。件上时,这个图形将取代鼠标指针图形来显示。 被设为一个整数代码,代表鼠标指针经过控件时要显示被设为一个整数代码,代表鼠标指针经过控件时要显示 的一个图形。的一个图形。 可能设置:可能设置: 0(缺省)不会影响鼠标经过控件时的标准行为或者预(缺省)不会影响鼠标经过控件时的标准行为或者预
33、 期行为期行为 1 指向西北的白箭头(标准指针)指向西北的白箭头(标准指针) 2十字形状十字形状 3 I形状(通常用于文本区域)形状(通常用于文本区域) 6 指向东北、西南的双头式箭头指向东北、西南的双头式箭头 7指向南北的双头式箭头指向南北的双头式箭头 8指向西北、东南的双头式箭头指向西北、东南的双头式箭头 9指向东、西的双头式箭头指向东、西的双头式箭头 10向上的箭头向上的箭头 11沙漏沙漏 12带杠的圆圈(意思:带杠的圆圈(意思:“不在这里不在这里”) 13指向西北、有沙漏的箭头指向西北、有沙漏的箭头 14带有问号的箭头(意思:带有问号的箭头(意思:“这项要帮助?这项要帮助?”) 15指
34、向东西南北的四头式箭头指向东西南北的四头式箭头(名称)(名称) 在设计期间只被设为那个要用来确定程序源代码内的在设计期间只被设为那个要用来确定程序源代码内的 那个控件的术语。当访问控件的属性、事件或方法时,那个控件的术语。当访问控件的属性、事件或方法时, 这个名字被其他指令用来特定的指那个控件。这个名字被其他指令用来特定的指那个控件。 在设计期间被设为一个位图文件的文件名,它将显示在设计期间被设为一个位图文件的文件名,它将显示 为控件的一部分背景内容。为控件的一部分背景内容。 被设置为一个整数,代表该控件的与它的标题被设置为一个整数,代表该控件的与它的标题 的相对位置。具体数值(的相对位置。具
35、体数值(0-12)见英文说明。)见英文说明。 对于一个含有用户可编辑文本内容的控件而言,对于一个含有用户可编辑文本内容的控件而言, 属性代表这个控件的文本内容。属性代表这个控件的文本内容。 被设置为用点表示的控件的左上角与包含这个控件的被设置为用点表示的控件的左上角与包含这个控件的 窗体(通常为)的上边界的垂直距离。窗体(通常为)的上边界的垂直距离。 在任何时候,都表示控件的内容或状态。根据在任何时候,都表示控件的内容或状态。根据 控件本身的特性,可以表达为一个布尔值、或控件本身的特性,可以表达为一个布尔值、或 一个数字、或一个文字字符串。一个数字、或一个文字字符串。 被设置为一个布尔值,表示
36、这个控件是否能被用户看被设置为一个布尔值,表示这个控件是否能被用户看见。缺省值:见。缺省值: 被设置为控件左右两边的距离。被设置为控件左右两边的距离。 指定单个对象在窗体键顺序中(在按下(递增)指定单个对象在窗体键顺序中(在按下(递增) 或或 (递减)后,焦点从一字段移动到下一(递减)后,焦点从一字段移动到下一 字段的次序)的位置。在字段的次序)的位置。在 键顺序中的第一个对键顺序中的第一个对 象的索引值是象的索引值是 0。 设置为布尔值,指定当用户跳格到一个对象时,该对象设置为布尔值,指定当用户跳格到一个对象时,该对象 能否获得焦点。缺省值为。能否获得焦点。缺省值为。 设为布尔值,指出一个控
37、件的内容(前台文本)在行末设为布尔值,指出一个控件的内容(前台文本)在行末 是否自动换行。是否自动换行。8 自定义菜单与工具条 用定制并创建宿主应用程序的元素:(菜单)(工具条)快捷菜单( ) 为了便于编程,需要将它们组合在一起,这样构成的集合被称为命令条( ),所以自定义菜单与工具条也可称为面向命令条编程。可以通过两个对象集合和两个个体对象操作命令条和命令条控件。q集合对象q创建对象q 格式为:q 命令条对象名=q 命令条集合对象() () = (试验, , , ) 察看本宿主程序的所有工具条 v创建新的菜单项创建新的菜单项v 一个菜单项是一个菜单集合的元素,而一个菜单项是一个菜单集合的元素
38、,而一个菜单是一个菜单条集合的元素,一一个菜单是一个菜单条集合的元素,一个菜单条则又是对象的集合的元素。格个菜单条则又是对象的集合的元素。格式为:式为:v()()()v可以忽略对象,但集合名称均不可省,可以忽略对象,但集合名称均不可省,( )括号内既可以是菜单条、菜单和菜单括号内既可以是菜单条、菜单和菜单项名的字符串,也可以是它们在各自的项名的字符串,也可以是它们在各自的集合中的索引号。建议使用菜单名以增集合中的索引号。建议使用菜单名以增强程序代码的可读性。强程序代码的可读性。v 给出一个在现有菜单条中增加菜单的给出一个在现有菜单条中增加菜单的示例。示例。 ()() 命令(), 帮助菜单标题为
39、命令,快捷键为,位置在帮助菜单之前 ()(命令) 新命令(), 新标题(), 2, 新命令 新菜单下有菜单项新命令,快捷键为,对应子程序为 () = 2() = 8 v创建新的工具条创建新的工具条v 工具条的添加同于菜单项。工具条的添加同于菜单项。v 对集合使用方法可以创建新工具条,对集合使用方法可以创建新工具条,方法只有一个自变量;方法只有一个自变量;v 对集合使用方法可以在工具条上增加对集合使用方法可以在工具条上增加按钮。方法有五个自变量:、和。按钮。方法有五个自变量:、和。参数说明按钮号,放在按钮的属性中表示按钮可用表示按钮是按下的 () 新工具条(新工具条) 76, 1, (新工具条)
40、 77, 2, 2(新工具条) 77, 3, 3 (新工具条) = 25 = 162 (新工具条) = Private Sub Workbook_BeforeClose(Cancel As Boolean)Toolbars(新工具条).DeleteEnd SubSub text()Worksheets(1).Cells(2, 2).Value = 宋End SubSub text2()Worksheets(1).Cells(3, 2).Value = 杰End SubSub text3()Worksheets(1).Cells(4, 2).Value = 鲲End Sub9 为项目加密 仅介绍
41、一种简单的加密方法,即通过设置工程属性来设置加密。核实“查看时锁定工程”,加密确认即可,则除非填写正确的密码,才可查看源程序。说明:应用该方法,中只能给所有的代码或不给任何代码设置权限。10 应用实例q实例1字体风格显示q 要求:打开一个工作簿,内有“字体设置”按钮,点击演示字体风格(包括黑体、斜体和下划线)。q步骤:q 启动,打开工具/选项,不选窗口选项中的网格线,输入说明。激活下的视图/工具栏/控件工具箱。q 在中添加两个命令按钮,分别设为字体设置和关闭。q 双击任意一个命令按钮,显示代码窗口。 插入/用户窗体,弹出1,并带有一个工具箱控件。如果没有工具箱,可在视图中选中。 拖出一个框架(
42、)、一个文字框()和两个命令按钮(),然后拖出三个复选框()放于框架内。在任何一个控件上单击右键,打开属性,更改框架、复选框和命令按钮的分别为字体风格,黑体、斜体和下划线以及结束运行、返回;更改文字框的属性为“我的试验”。 下面为1内的各个控件添加代码:Private Sub CheckBox1_Click()UserForm1.TextBox1.Font.Bold = Not UserForm1.TextBox1.Font.BoldEnd SubPrivate Sub CheckBox2_Click()UserForm1.TextBox1.Font.Italic = Not UserForm
43、1.TextBox1.Font.ItalicEnd SubPrivate Sub CheckBox3_Click()UserForm1.TextBox1.Font.Underline = Not UserForm1.TextBox1.Font.UnderlineEnd SubPrivate Sub CommandButton1_Click()UserForm1.HideEnd SubPrivate Sub CommandButton2_Click()EndEnd Sub 打开视图/工程资源管理器1,为其中的两个命令按钮和工作表添加代码:Private Sub CommandButton1_Cl
44、ick()UserForm1.ShowEnd SubPrivate Sub CommandButton2_Click()ThisWorkbook.CloseEnd SubPrivate Sub Worksheet_Activate()UserForm1.TextBox1.Font.Bold = FalseUserForm1.TextBox1.Font.Italic = FalseUserForm1.TextBox1.Font.Underline = FalseUserForm1.CommandButton1.Enabled = TrueUserForm1.CommandButton2.Enab
45、led = TrueEnd Subq实例2用户进入工作簿:输入框输入q要求:打开工作簿 ,缺省工作表为第2个工作表,并弹出身份验证/用户姓名输入框,输入后,弹出身份验证/用户密码输入框。当输入正确,显示消息框“您的身份已确认,欢迎使用!”,工作表换为第1个工作表;当用户名正确而密码错误,显示消息框“密码错误,请重新输入!”;当用户名错误,显示“用户名错误,请重新输入!”。一旦输入3次仍未成功,显示“对不起,您操作次数太多,文件关闭!”,该工作簿关闭。q步骤:q 打开新的工作簿,激活视图/工具栏 ,打开 编辑器,在中添入事件代码: () i, s , (2) 激活工作表2s = 0 i = 1
46、3s = s + i = (用户姓名:, 身份验证) = (用户密码:, 身份验证) = = 123456 您的身份已确认,欢迎使用! (1) 密码错误,请重新输入! 用户名错误,请重新输入! i s = 6 对不起,您操作次数太多,文件关闭! q实例3用户进入工作簿:窗体显示q要求:打开工作簿 ,缺省工作表为第2个工作表,并弹出1,上有用户姓名、用户密码及两个命令按钮,输入姓名、密码后,点击确认按钮,若输入正确,显示消息框“身份确认,欢迎进入!”,并激活第1个工作表;若输入姓名正确而密码不正确,显示“密码错误,请重新输入!”;若输入姓名不正确,显示“用户名输入错误,请重新输入!”。当试错次数
47、超过三次,显示“对不起,您试错次数太多,程序退出!”,工作簿关闭。若输入正确,显示“身份确认,欢迎进入!”,此时点击退出按钮,显示“开始使用”,并关闭1;若输入错误,点击退出按钮,显示“谢绝使用”,并关闭工作簿。步骤: 插入用户窗体,拖出两个标签()、两个文字框()和两个命令按钮(),更改标签和命令按钮分别为:用户姓名、验证密码,确认和退出。 为各个控件添加代码:Public t As BytePrivate Sub CommandButton1_Click()Static i As Integert = 0If username.Text = administrator Then If pa
48、ssword.Text = 123456 Then t = 1 密码错误,请重新输入! i = i + 1 用户名输入错误,请重新输入! i = i + 1 i = 3 对不起,您试错次数太多,程序退出! t = 1 身份确认,欢迎进入! (1) 2() t = 1 开始使用! 1 谢绝使用! 激活视图/工具栏 ,打开 编辑器,在中添入事件代码:Private Sub Workbook_Open()Worksheets(2).ActivateUserForm1.ShowUserForm1.username.Text = UserForm1.password.Text = UserForm1.CommandButton1.Enabled = TrueUserForm1.CommandButton2.Enabled = TrueEnd Sub说明:要在输入密码中显示符号,而不显示具体密码,可修改文字框的PasswordChar属性为单个字符,如*。演讲完毕,谢谢观看!