已阅读5页,还剩101页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VisualBasicforApplication VBA 培训 铸管部 2006 目录 什么是VBA对象 属性和方法数据类型 变量和常量赋值语句 运算符和内部函数内部对话框程序流程控制语句模块 子程序和函数用户窗体和控件自定义菜单与工具条若干实例 0什么是VBA 像BorlandDelphi VC 及其它的应用程序一样 VBA是一种应用程序开发工具 但是与它们不同 VBA是唯一由其他应用程序控制的应用程序开发工具 它可以增强其他应用程序的功能 VBA实际上是建立在Office中的标准宏语言 可以有效的自定义和扩展那些使用了VBA应用程序的功能 VBA实际上是VB的派生体 为了在应用程序中使用方便而有针对性的优化和设置了VB 1对象 属性和方法 目前 面向对象程序设计 object orientedprogramming 简称OOP 被广泛使用 主要是因为它采用了模块化设计 可以实现四个目标 可检验的 verifiable 可修正的 revisable 可重复使用的 reusable 可移植的 transportable 或说具有三个基本概念的支持 数据封装 继承性和多态性 在OOP中 代码对象是一个容器 container 容器中包括数据和处理该数据的代码 即对象的属性和方法都包含在对象的定义中 代码对象具有属性和方法 属性 properties 是对象的外部可见数据 visible data 方法 methods 是对象处理数据的过程 其中 外部可见数据是在对象外部可以存取的数据 属性可以是对象处理的数据 或者用来控制对象的行为和外观 当执行一个方法时 该方法仅处理对象所包含的属性 一个对象的方法不能直接改变另一个对象的属性值 但是一个对象的方法可以请求其他对象自行改变它们自己的属性值 一个对象可以基于对另一个对象的描述 代码对象还可以是其他较大代码对象的组成部分 即对象可以组合 当一个对象是另一个对象的组成部分时 后者就要继承 inheritance 前者的所有属性和方法 为存取组合对象的属性和方法 书写格式必须从最外层容器对象开始向内层写 直至需要存取属性和方法的那个对象 对象名间用小数点分隔 许多对象可以具有相同的方法 不同对象调用该方法都会产生正确的操作 每个对象是一个特定的 唯一的事物 一个类 class 则是指具有特定类型的所有对象 所以类是对象定义的最高级别 可以用一个类来创建一个对象 Excel对象包括工作表 工作簿 图表和单元格区域等 菜单 工具条以及Excel工作表函数库也都是对象 对象集合在VBA中使用集合 collection 来存取大多数工作表对象 如Workbooks Worksheets等 格式为 集合 成员名称 或 集合 整数值 其中整数值表示成员位置序号 如工作簿名为Sales 且工作表West位于该工作簿的第二个表 则下列代码用于存取同一工作表 Workbooks Sales Worksheets West Workbooks Sales Worksheets 2 获取集合的信息 SubGetInformation Worksheets 1 Range B2 Value Worksheets Count Count属性是统计该集合中成员的个数Worksheets 1 Range B3 Value Worksheets Parent Name Parent属性包含集合的父对象的名称Worksheets 1 Range B4 Value Worksheets 3 NameEndSub 在集合中增加 删去成员 Worksheets Add 在工作表集合的开头添加一个缺省类型的新工作表Worksheets 3 Delete 删去第3个工作表 用Range对象存取单元格工作表上的单个单元格并不是对象 工作表上的单元格是通过Range对象来存取的 一个Range对象是工作表上的任意单元格或单元格的矩形组 通过Union函数将互不连通的单元格组合成一个Range对象 生成Range对象的三种可用方法是 Range方法Cells方法Offset方法 Range方法Range方法是用途最广的一种方法 SubtheRanges Worksheets 1 Range B1 Value 1 单个单元格Worksheets 1 Range D2 B2 Value 2 矩形区域Worksheets 1 Range B3 D3 Value 3 矩形区域Worksheets 1 Range B4 E5 D6 Value 4 三个孤立的单元格Union Worksheets 1 Range B7 D7 Worksheets 1 Range C8 Value 5 两个不连通的区域Worksheets 1 Range B9 D9 F9 Value 6 两个不连通的区域EndSub 注意 矩形区域的表示方法有二 Range 列1行1 列2行2 Range 列1行1 列2行2 注意 若把Range方法用于Range对象 不管单元格引用是否是直接单元格名 Range方法对Range对象的引用都是相对于Range对象的左上角的 例如 Range B1 Range A2 Value 1实际上是B2单元格的值为1 Cells方法Cells方法的格式为 Cells i j 其中 i表示单元格行号 j表示列号 有时j可以用 字母 替代 注意事项同上 Offset方法Offset方法是专门相对于当前单元格创建的Range对象 格式为 Range 或Cells i j Offset m n 其中 m表示行偏移量 n表示列偏移量 相对偏移方法比较 Range B4 Cells 4 2 Offset 3 1 Range方法的简写Range方法可以采用一种简写的形式 如 Worksheets 1 Range E7 可简写为 Worksheets 1 E7 活动属性VBA拥有应用软件对象的几个特殊属性 即其活动属性 activeproperties 活动属性的取值总是取决于特定类的当前活动对象 活动对象可以是工作簿和工作表重叠窗口中的最顶层的表 或是Range对象的活动单元格 或是图形对象中被选中的对象 活动属性经常和Select方法 Activate方法一起使用 Select用以选择一个单元格区域或一个表 Activate用以激活当前选择对象中的一个单个单元格或选择一个表 此时同于Select ActiveWorkbook属性值取决于当前显示的工作簿 ActiveSheet属性值取决于活动工作簿中最顶层的表 可以是工作表 worksheet 图表 chartsheet 宏表 macrosheet 或模块表 modulesheet ActiveCell属性值取决于一单个单元格Range对象 Selection属性与ActiveCell属性紧密相关 但Selection属性值取决于所有被选中的单元格 而不是单个活动单元格 SubActiveProperty ActiveWorkbook Worksheets 1 Select 活动工作簿的第一张工作表被选中ActiveSheet Range B3 Select 活动工作表的单个单元格B3被选中ActiveCell Value 23 活动单元格的数值ActiveCell NumberFormat 0 00 活动单元格数据格式ActiveCell HorizontalAlignment xlCenter 活动单元格数据位置水平居中ActiveCell BorderAroundWeight xlThick ColorIndex 4 一种方法 与属性Borders LineStyle相对应 单元格外框厚的绿色ActiveCell Interior ColorIndex 6 单元格背景黄色ActiveSheet Range B5 D6 Select 活动工作表的一片单元格被选中Selection Value 23Selection NumberFormat 0 00 Selection HorizontalAlignment xlCenterSelection BorderAroundWeight xlThick ColorIndex 4Selection Interior ColorIndex 6ActiveSheet Range A1 Select 将活动单元格置于A1EndSub 格式属性上例已经引入了格式属性 实际中强烈建议用记录宏的办法获取其格式 内容属性工作表单元格中放入数据有两种途径 一是使用Range对象的Value属性 二是使用Formula属性 Range B2 FormulaR1C1 宋 Range B3 Formula 杰 Range B4 Value 鲲 Range B5 Formula 2 3 Range B6 FormulaR1C1 R 1 C 2 Range B7 Value 2 3 Range B8 Formula B5 2 一样的效果 一样的效果 一样的效果 2数据类型 变量和常量 变量 variable 和数据类型 datatype 决定着数据在计算机内存中的存储方式及存放地点 数据类型是指数据值在内存中的存储方式 包括数据值大小 有效位及是否有小数部分 VBA中 有11种内部数据类型 布尔型 Boolean 整数 Integer 长整数 Long 单精度浮点数 Single 双精度浮点数 Double 货币 Currency 日期 Date 字符串 String 对象 Object 数组 Array 变体 Variant 创建自定义数据类型 将几个现有的数据类型联合在一起组成一个结构 可能更便于使用 用Type语句可定义一个数据结构 格式为 Type结构名结构内元素1As数据类型结构内元素2As数据类型 EndType 注意 Type不能放在Sub Public Function Function中 而应单独在最初的变量声明中创建 变量是内存中被命名的存储位置 即在内存地址和变量名之间建立了一种线性映射关系 变量名可由字母 数字及标点符号组成 必须以字母打头 且不能包含空格 小数点及类型声明符 可以在变量名中使用大写字母 在VBA中并不区别大小写字母 通常将多个词用下划线或大写字母连起来构成具有含义的变量名 变量的声明强制声明变量 应在每个模块的开始处加入一条OptionExplicit 这样程序运行时遇到未定义类型的变量 会显示出错信息 用Dim语句声明变量 格式有 当没有 As数据类型 或为 AsVatiable 时 意味着该变量为变体类型 Dim变量名As数据类型 变量名As数据类型 用Public声明全局变量 Public声明的变量在应用软件的任何子程序中都是有效的 定义数组变量 建议用格式 Dim数组名 number1tonumber2 As数据类型 定义和使用常量 格式为 Const常量名 常数值 变量和常量都有一定的有效作用范围 也称作用域 注意 一旦使用常量 绝不可再给常量赋值 OptionExplicitDimokAsString ok的有效作用范围为整个模块PublicConstz 15 z的有效作用范围为整个模块 且不可再赋值Subsjk1 DimxAsInteger x的作用域为该子程序x 10ok yes MsgBox x xEndSubSubsjk2 MsgBoxokMsgBox z zEndSub 说明 在未运行sjk1之前 ok 3赋值语句 运算符和内部函数 定义了变量 即可使用变量进行实际工作 赋值语句格式为 变量名 表达式其中 变量名可以是普通变量 数组或对象属性 表达式可以是数值 也可以是由变量 运算符 常量和函数组成的公式 注意对象变量的赋值格式 Dim变量名AsObjectSet变量名 计算对象值的表达式 SubObjectiveVar DimtheArrangeAsObjectSettheArrange ActiveSheet Range B2 theArrange Value 2EndSub 运算符VBA的基本运算是通过运算符来实现的 算术运算符字符串运算符关系运算符 比较运算符 逻辑运算符 相同优先级 相同优先级 当然 是约束运算优先级的更好办法 常用的算术运算符与字符串运算符 按其优先级由高到低顺序 如下 运算符的练习 可在视图 立即窗口中进行 许多程序的试算均可在立即窗口中进行 如果改为 c a b 显示False 因为c 0 a b 3 不提倡 关系运算符关系运算符也称逻辑比较运算符 其结果为True或False 说明 被比较变量中的任一个变量值为非合法值Null 表达式也将返回Null 与Is相当的逻辑测试函数有 可以和Like运算符一起使用的通配符 逻辑运算符 布尔运算符 逻辑运算符是关系运算符的扩展工具 把若干逻辑比较组合在一起 形成为一个逻辑表达式 内部函数数学函数 数学函数中还有两个重要的产生随机数的函数 Randimize和Rnd 要说明的是 随机数是计算出来的 初值相同 得到的随机数也相同 建议在一个使用Rnd 函数计算随机数的程序中 首先执行一次Randomize Randomize用系统时间计算初值 函数初始化随机数发生器使之每次发出的随机数各不相同 Rnd 产生随机数 当自变量为负数时 Rnd 函数将以该自变量作为初值 当自变量为0 该函数将返回上一个随机数 如果自变量为正数或空 该函数将返回下一个随机数 字符串函数 字符串比较函数 StrComp String1 String2 Compare Compare 0 二进制码比较形式 Compare 1 正文比较形式 o和 h用于定义八进制数和十六进制数 Val 函数 略去了字符串左侧的空格 并转换字符串直至字符串中的非数字字符 不仅略去了字符串中的其他正文和空格 而且略去了数字字符中间的空格 如val o33 27 日期 时间及格式函数 数据类型转换函数 4内部对话框 内容概要 消息框Msgbox 输入框Inputbox Excel内部对话框 消息框Msgbox 用途 输出简单的错误 警告或提示信息给使用者 语法 Msgbox prompt buttons title helpfile context title prompt buttons SubPrepare DimtheCodeAsInteger theReplyAsIntegertheCode vbYesNo vbDefaultButton1 vbInformationthreply MsgBox prompt Areyousureyouwanttoquit Title MsgboxTest Buttons theCode MsgBox Areyousureyouwanttoquit theCode MsgboxTest 作用同上EndSub 其中 buttons自变量的设定影响深远 其设定值可概分为四组 第一组值 0 5 用来决定对话框中按钮的形式与数目 第二组值 16 32 48 64 用来决定图标的样式 第三组 0 256 512 决定出哪一个按钮是缺省按钮 而第四组 0 4096 则决定消息框的强制响应性 第1组 按钮设定 决定消息框中的按钮样式 第2组 图标设定 决定消息框中的图标样式 第3组 缺省按钮设定 决定何者为缺省按钮 第4组 类型设定 决定对话框的类型 强制响应性 说明 表中的 常数 都是VisualBasic内定的 便于记忆及识别用 四组设定值 可从每组数值常数中选一个出来相加 以得到不同效果 也可取其和 Subexample Dimbutton 4 AsIntegerbutton 0 MsgBox 消息框示范 1 64 vbOkCancel vbInformation button 1 MsgBox 要终止吗 4 32 256 vbYesNo vbQuestrion vbDefaultButton2 button 2 MsgBox 注意 VisualBasic开课了 48 4096 vbOk vbSyetemModal button 3 MsgBox 示范结束 2 16 vbAbortRetryIgnore vbStop EndSub SubmakeDialog1 DimtheCodeAsInteger theReplyAsIntegertheCode vbYesNo vbDefaultButton2 vbExclamation vbApplicationModeltheReply MsgBox prompt Doyoureallywanttodothis Buttons theCode SelectCasetheReplyCasevbYes Hereallywantstodothis sogoahead CodeblockforYesanswerDebug Print Yes CasevbNo CodeblockforNoanswerDebug Print No EndSelectEndSub 虚框表示缺省按钮 图标 InputBox 格式 InputBox prompt title default xpos ypos helpfile context SubHello DimstrAsStringstr InputBox Hello 向您问好 宋杰鲲 EndSub PrivateSubUserForm Activate DimstrAsStringstr InputBox 请输入字体 字体 宋体 lbl Caption str 展示 Withtxt Text 您好 Font str FontSize 20EndWithEndSub 5控制程序流程 分支结构块If结构SelectCase结构GoTo非结构化分支循环和重复结构For Next循环Do Loop重复结构While Wend重复结构For Each循环 分支结构 块If结构块If结构1 单块If Then结构 格式 If逻辑表达式Then语句块EndIf 例题 Subtest DimtheHoursAsSingle theRateAsCurrencyDimPay1 Pay2AsCurrencytheHours 40theRate 8 75Pay1 thePay theHours 只有一个参数 theRate采用缺省值5 25Pay2 thePay theHours theRate 两个参数Debug PrintFormat Pay1 0 00 Format Pay2 0 00 EndSub FunctionthePay2 hoursAsSingle OptionalPayRate OptionalSales AsCurrencyDimBonusAsCurrencyConstDefaultRate 5 25 ConstBonusThreshold 5000ConstBonusValue 500IfIsMissing PayRate ThenPayRate DefaultRateEndIfBonus 0IfNotIsMissing Sales ThenIfSales BonusThresholdThenBonus BonusValueEndIfEndIfthePay2 hours PayRate BonusEndFunction 块If结构2 If Then ElseIf多块结构格式 If逻辑表达式1Then语句块1ElseIf逻辑表达式2Then语句块2ElseIf逻辑表达式3Then语句块3 其它ElseIf语句 EndIf FunctionthePay2 hoursAsSingle OptionalPayRate OptionalSales AsCurrencyDimBonusAsCurrencyConstDefaultRate 5 25 ConstBonusThreshold 5000ConstBonusValue 500IfIsMissing PayRate ThenPayRate DefaultRateEndIfBonus 0IfIsMissing Sales Then 什么都不再作ElseIfSales BonusThresholdThenBonus BonusValueEndIfthePay2 hours PayRate BonusEndFunction 块If结构3 Else从句格式 If逻辑表达式1Then语句块1ElseIf逻辑表达式2Then语句块2 其它ElseIf语句 Else其它语句块EndIf FunctionthePay2 hoursAsSingle Optional PayRate OptionalSales AsCurrencyDimBonusAsCurrencyConstDefaultRate 5 25ConstBonusThreshold 5000ConstBonusValue 500IfIsMissing PayRate ThenPayRate DefaultRateEndIfBonus 0IfIsMissing Sales Then 什么都不再作ElseIfSales BonusThresholdThenBonus BonusValueEndIf Ifhours40 And hours 50 Thenwages 40 PayRate hours 40 1 5 PayRateElsewages 40 PayRate 10 1 5 PayRate hours 50 2 PayRateEndIfthePay2 hours PayRate BonusEndFunction 说明 编写的函数可以在Excel工作表中由函数 fx 用户定义找到 并可直接使用 分支结构 SelectCase结构SelectCase结构1格式 SelectCase测试表达式Case表达式值列1语句块1Case表达式值列2语句块2 其它Case语句 EndSelect 以下例句都是合法的Case语句 Case25Case1 3 5 7Case Song Case1 2to7 9Case3 Is 7CaseIs10 Constyearly 0Constmonthly 1Constbimonthly 2Constquarterly 3Constsemiannually 4FunctionthePmt theRateAsSingle nyrsAsInteger pvAsCurrency PeriodTypeAsInteger DimnperAsInteger fvAsCurrency rateAsSingle fv 0SelectCasePeriodTypeCaseyearlynper nyrsrate theRateCasemonthlynper nyrs 12rate theRate 12Casebimonthlynper nyrs 6rate theRate 6Casequarterlynper nyrs 4rate theRate 4Casesemiannuallynper nyrs 2rate theRate 2EndSelect thePmt Application Pmt rate nper pv fv EndFunction SelectCase结构2在上述程序的SelectCase语句最后加入 CaseElsethePmt CVErr xlErrValue ExitFunction 说明 要使用其它错误值信息 如 NUM 可在对象浏览器中选择xlErr 察看xlCVError下的所有常量 如 NUM 对应xlErrNum 分支结构 GoTo语句格式 GoTo行语句标号名或If逻辑表达式ThenGoTo行语句标号名 IfPeriodTypeyearlyThenGoTolmonthnper nyrsrate theRateGoTogetvallmonth IfPeriodTypemonthlyThenGoTolbimonthnper nyrs 12rate theRate 12GoTogetval lbimonth IfPeriodTypebimonthlyThenGoTolquarternper nyrs 6rate theRate 6GoTogetvallquarter IfPeriodTypequarterlyThenGoTolsemiannualnper nyrs 4rate theRate 4GoTogetvallsemiannual IfPeriodTypesemiannuallyThenGoTolelsenper nyrs 2rate theRate 2GoTogetval lelse thePmt CVErr xlErrNum GoTodonegetval thePmt Application Pmt rate nper pv fv done EndFunction 注意 某一行语句的标号名必须写在一行语句的开始并用冒号与后面的语句分开 尽可能避免使用GoTo非结构化分支语句 循环和重复结构 For Next循环格式为 For循环变量 初值To终值Step步长 缺省为1 循环体1ExitFor循环体2Next循环变量 ExitFor可以没有 它是强制终止循环的语句 执行中遇到该语句 程序将中断循环 到Next语句的下一语句执行 循环变量是个一般变量 可在循环体中对其修改 但应避免在循环体中修改该变量 SubBlockAverage DimnumRowsAsInteger numColsAsIntegerDimtheRowAsInteger theColAsIntegerDimiAsInteger jAsIntegerDimtheAverageAsSingle theSumAsSingleDimmyArray AsSingle 未声明大小的动态数组numRows Selection Rows CountnumCols Selection Columns CountReDimmyArray numRows numCols 根据实际需要重新确定动态数组大小FortheRow 1TonumRowsFortheCol 1TonumColsmyArray theRow theCol Selection Cells theRow theCol ValueNexttheColNexttheRow theSum 0Fori 1TonumRowsForj 1TonumColstheSum theSum myArray i j NextjNextitheAverage theSum numRows numCols MsgBox Theaverageis Str theAverage EndSub 说明 For Next循环实际上是已知迭代次数的循环语句 循环和重复结构 Do Loop重复结构格式为 开头判断真逻辑条件 DoWhile条件循环体1ExitDo循环体2Loop 结尾判断真逻辑条件 Do循环体1ExitDo循环体2LoopWhile条件 开头判断假逻辑条件 DoUntil条件循环体1ExitDo循环体2Loop 结尾判断假逻辑条件 Do循环体1ExitDo循环体2LoopUntil条件 FunctionSuShu mAsLong AsStringDimi tAsLongFori 2Tom 1t mModiDoWhilet 0SuShu Str m 不是素数 ExitForLoopNextiIf t0 Or m 2 Then 由于2不作循环 所以应加入Or这一条件SuShu Str m 是素数 EndIfEndFunction FunctionageDifferent mAsInteger nAsInteger AsString 求经过多少年后 父母的年龄是子女的2倍DimfAsByteDimy tAsIntegerf 0y 0Ifm0 m m 1 n n 1 y y 1Ify 50Thenf 1Loop Iff 0ThenageDifferent 需要 y 年 m 是 n 的2倍 ElseageDifferent 输入的年龄差距过大 小 EndIfEndFunction 循环和重复结构 While Wend重复结构格式为 While条件循环体Wend FunctionMaxYueShu mAsInteger nAsInteger 求两个数的最大公约数 用辗转相除法Dimr tAsIntegerIfm0m n n r r mModnWendMaxYueShu nEndFunction 循环和重复结构 For Each循环格式为 ForEachelementIncollection循环体1ExitFor循环体2Nextelement FunctionsumArray theArray 求数组元素之和Dimelement theSumtheSum 0ForEachelementIntheArraytheSum theSum elementNextelementsumArray theSumEndFunction FunctionMultiply0 ParamArraytheArray AsSingleDimproductAsSingle part valueproduct 1ForEachpartIntheArrayIfTypeName part Range OrRight TypeName part 2 ThenForEachvalueInpartproduct product valueNextvalueElseproduct product partEndIfNextpartMultiply0 productEndFunction 6函数和子程序 子程序是指最小的 可用计算机程序 格式为 Sub程序名 自变量表 子程序体 EndSub 子程序的自变量表将被调子程序与调用子程序连接起来 除了全局变量以外 其他所需数值都必须通过自变量表进行传递 子程序类型普通子程序 generalprocedure 普通子程序实际上指的是VB标准程序 不改变子程序之外的任何东西 仅用来计算数值 显示文档 给其他程序发送消息或处理磁盘文件 命令字程序 commandprocedure 命令子程序相当于Excel菜单命令 用于扩充Excel功能 通常不带自变量 如需用户输入数据 可直接通过对话框获取 事件子程序 eventprocedure 事件子程序是与特定事件联系在一起的 当事件发生时 子程序才被执行 注意 事件子程序也可以是命令子程序或普通子程序 如要在用户打开或关闭工作表时自动运行一个子程序 可以命名该子程序为Auto Open或Auto Close 如可以使用OnSheetDeactivate属性 在用户释放 deactivate 一个表时执行事件子程序 释放一个表的办法是关闭该表 或激活另一个表 函数 function 函数可以视为子程序的一部分 也有其特殊的地方 Worksheets sheet1 OnSheetActive InitIt 如要在用户激活一个工作表时执行一个事件子程序 可将子程序名赋给对应的工作表对象的OnSheetActive属性 例如下列语句在用户激活Sheet1表时运行InitIt程序 子程序调用在同一模块中调用子程序在不同模块中调用子程序 3 在不同工作表中调用子程序 4 私有模块和私有子程序 分别用下图表示 7窗体和控件 复选框 命令按钮 选项按钮 列表框 旋转按钮 滚动条 图像 复合框 切换按钮 框架 标签 文字框 控件常用公共属性 Accelerator被设为一个单字符字符串 代表使得键盘可以操作控件的那个Alt键 键盘操作会导致识别控件 Click事件 缺省设置 空 示例 CommandButton1 Accelerator C 命令按钮1的Accelerator属性 指的是Alt C也可激发 Click事件 Autosize被设为一个布尔值 True或False 代表控件的 Height属性和 Width属性是否可以被WindowsGDI Windows图形交互设备系统 自动调整大小 缺省设置 False BackColor被设为一个代码 代表解释器将赋给控件背景 不是前台文本 颜色 BackStyle被设为一个布尔值 代表控件的背景是否是不透明的 或者是一种原色 False代表透明 缺省设置 True BorderColor被设为一个代码 代表解释器赋给控件边框的颜色 BorderStyle被设为一个整数标识 代表是否赋给控件一个单像素宽的 给定 BorderColor属性的实线 可能设置 0 缺省值 赋给控件标准边框 对于框架控件而言 可能根本就没有变框 1赋给控件一条单像素宽的边框线 它的颜色由当前 BorderColor属性设置定义 ControlTipText在设计期间被设为一个含有文本的子母数字式的字符串 当鼠标指针在控件上作短暂停留时 不用按下鼠标按钮用户就可以看到这个文本 Enabled一个布尔值 代表控件是否是活动的 以及控件是否在接受用户事件 Font被设为一个对象 它代表与控件相关的所有文本的Windows字体的属性 ForeColor被设为一个代码 代表控件的前景色 与BackColor后景色相对应 Height被设为控件 或者包围控件的矩形区域 上边缘和下边缘之间的距离 HelpContextID被设为一个长整型数 代表与VBA窗体模块相关的Windows帮助文件所使用的ID号 以说明控件的使用 Left控件的左上角与包含这个控件的对象的左边界之间的距离 这个包含控件的对象一般是UserForm Locked被设为一个布尔值 表示是否防止用户把光标放置在控件里 缺省值 False MouseIcon在设计期间 当控件的MousePointer被设置为99时 MouseIcon被设为一个图形的文件名 在指针处于控件上时 这个图形将取代鼠标指针图形来显示 MousePointer被设为一个整数代码 代表鼠标指针经过控件时要显示的一个图形 可能设置 0 缺省 不会影响鼠标经过控件时的标准行为或者预期行为1指向西北的白箭头 标准Windows指针 2十字形状3I形状 通常用于文本区域 6指向东北 西南的双头式箭头7指向南北的双头式箭头8指向西北 东南的双头式箭头9指向东 西的双头式箭头10向上的箭头11沙漏12带杠的圆圈 意思 不在这里 13指向西北 有沙漏的箭头14带有问号的箭头 意思 这项要帮助 15指向东西南北的四头式箭头 Name 名称 在设计期间只被设为那个要用来确定程序源代码内的那个控件的术语 当访问控件的属性 事件或方法时 这个名字被其他VBA指令用来特定的指那个控件 Picture在设计期间被设为一个位图文件的文件名 它将显示为控件的一部分背景内容 PicturePosition被设置为一个整数 代表该控件的 picture与它的标题的相对位置 具体数值 0 12 见英文说明 Text对于一个含有用户可编辑文本内容的控件而言 Text属性代表这个控件的文本内容 Top被设置为用点表示的控件的左上角与包含这个控件的窗体 通常为UserForm 的上边界的垂直距离 Value在任何时候 Value都表示控件的内容或状态 根据控件本身的特性 Value可以表达为一个布尔值 或一个数字 或一个文字字符串 Visible被设置为一个布尔值 表示这个控件是否能被用户看见 缺省值 True Width被设置为控件左右两边的距离 TabIndex指定单个对象在窗体Tab键顺序中 在按下Tab 递增 或Shift Tab 递减 后 焦点从一字段移动到下一字段的次序 的位置 在Tab键顺序中的第一个对象的索引值是0 TabStop设置为布尔值 指定当用户跳格到一个对象时 该对象能否获得焦点 缺省值为True WordWrap设为布尔值 指出一个控件的内容 前台文本 在行末是否自动换行 8自定义菜单与工具条 用VBA定制并创建宿主应用程序Excel的元素 Menus 菜单 Toolbars 工具条 快捷菜单 ShortcutMenus 为了便于编程 需要将它们组合在一起 这样构成的集合被称为命令条 CommandBars 所以自定义菜单与工具条也可称为面向命令条编程 可以通过两个对象集合和两个个体对象操作命令条和命令条控件 CommandBars集合对象创建CommandBar对象格式为 命令条对象名 命令条集合对象 add Name Position MenuBar Temporary SubCommandBarsFind DimcbarAsVariantDimmyCommandbarAsObjectSetmyCommandbar CommandBars Add Name 试验 Position msoBarTop MenuBar False temporary True ForEachcbarInCommandBars 察看本宿主程序的所有工具条Debug Printcbar NameNextEndSub 创建新的菜单项一个菜单项是一个菜单MenuItems集合的元素 而一个菜单是一个菜单条Menus集合的元素 一个菜单条则又是Application对象的Menubars集合的元素 格式为 Application Menubars BarName Menus MenuName MenuItems ItemName 可以忽略Application对象 但集合名称均不可省 括号内既可以是菜单条 菜单和菜单项名的字符串 也可以是它们在各自的集合中的索引号 建议使用菜单名以增强程序代码的可读性 给出一个在现有菜单条中增加菜单的示例 PrivateSubWorkbook Open MenuBars xlWorksheet Menus AddCaption 命令 C before 帮助 菜单标题为 命令 快捷键为Alt C 位置在 帮助 菜单之前WithMenuBars xlWorksheet Menus 命令 MenuItems AddCaption 新命令 L OnAction test AddCaption 新标题 U OnAction test2 before 新命令 EndWith 新菜单下有菜单项 新命令 快捷键为Shift L 对应子程序为testEndSubSubtest Selection Borders Weight xlThickEndSubSubtest2 Selection Borders ColorIndex 8EndSub 创建新的工具条工具条的添加同于菜单项 对Toolbars集合使用Add方法可以创建新工具条 Add方法只有Name一个自变量 对ToolBarButtons集合使用Add方法可以在工具条上增加按钮 Add方法有五个自变量 button before Onaction enabled和pushed PrivateSubWorkbook Open Toolbars AddName 新工具条 Toolbars 新工具条 ToolbarButtons AddButton 76 before 1 OnAction text Toolbars 新工具条 ToolbarButtons AddButton 77 before 2 OnAction text2 Toolbars 新工具条 ToolbarButtons AddButton 77 before 3 OnAction text3 WithToolbars 新工具条 Left 25 Top 162EndWithToolbars 新工具条 Visible TrueEndSub 9为VBA项目加密 仅介绍一种简单的加密方法 即通过设置VBAProject工程属性来设置加密 核实 查看时锁定工程 加密确认即可 则除非填写正确的密码 才可查看源程序 说明 应用该方法 VBE中只能给所有的代码或不给任何代码设置权限 10VBE应用实例 实例1 字体风格显示要求 打开一个Excel工作簿 内有 字体设置 按钮 点击演示字体风格 包括黑体 斜体和下划线 步骤 启动Excel 打开工具 选项 不选窗口选项中的网格线 输入说明 激活Excel下的视图 工具栏 控件工具箱 在Excel中添加两个命令按钮 Caption分别设为字体设置和关闭Excel 双击任意一个命令按钮 显示VBA代码窗口 插入 用户窗体 弹出UserForm1 并带有一个工具箱控件 如果没有工具箱 可在视图中选中 拖出一个框架 Frame 一个文字框 Te
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年齐齐哈尔辅警招聘考试真题(含答案详解)
- 2024年安徽辅警协警招聘考试备考题库含答案详解(模拟题)
- 2023年贵阳辅警招聘考试题库附答案详解(典型题)
- 延安职业技术学院《音乐技能(声乐基础)》2024-2025学年第一学期期末试卷
- 大连海洋大学《建筑设计及理论3》2024-2025学年第一学期期末试卷
- 南京艺术学院《中外文学史》2024-2025学年第一学期期末试卷
- 2025年黑龙江省铁力市第一中学高二上生物期末检测模拟试题含解析
- 2026届重庆市江津中学、合川中学等七校高生物高二第一学期期末联考试题含解析
- 2025-2026学年四川省简阳市化学高二第一学期期末达标检测模拟试题含解析
- 长春市第八十七中学2025年生物高一上期末检测试题含解析
- 烟花炮竹仓库知识培训总结课件
- 2025年及未来5年中国汽车救援行业发展运行现状及投资战略规划报告
- 《在奉献中成就精彩人生》课件
- 第一性原理新视角
- 2025年钢筋工考试试题及答案
- 年产14万吨石墨烯轻纺产业园项目(一期)环评报告表
- 2.3 汉族民歌 教学设计-2023-2024学年高一上学期音乐人音版(2019)必修音乐鉴赏
- 【大单元教学】第三单元《幸福一家人》单元整体设计(含教学评价)
- (正式版)DB3301∕T 0498-2025 《小型水利工程项目划分管理规范》
- 国开2025年秋季《形势与政策》大作业答案
- 员工下班外出免责协议书
评论
0/150
提交评论