- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VBA在限定Excel工作表用户按钮中的应用_计算机论文.doc
VBA在限定Excel工作表用户按钮中的应用_计算机论文
VBA在限定Excel工作表用户按钮中的应用_计算机论文
摘 要 通过研究VBE及其下层对象的访问方法,本文详细地探讨了按钮过程的代码控制技术,从而实现了Excel测试软件中工作表用户按钮的执行限定。关键词 按钮过程 VBE 下层对象 代码限定
1 引言
作为一个优秀的表格处理软件和系统开发平台,Excel拥有许多无可替代的优势。基于Excel环境开发的管理信息系统,具有操作直观性强、开发周期短的特点,因此形成了熟悉Excel操作的广大用户。为了保证开发系统的正常渠道流通及著作者利益,必须保护系统的使用权限,本文通过VBA的开发应用,提出了一种Excel工作表用户按钮的限定方法,以此来完善其系统测试软件的功能。
2 限定按钮执行及其对应过程代码
限定工作表用户按钮的执行包括两个方面的含义,即限定其按钮对象的显示及其指定宏过程代码的有效性,两者结合在一起加以实现,才能起到既展现软件功能,又真正限制其过分执行操作的作用,从而体现对用户软件的测试目的。
2.1 查找按钮执行过程代码
限定按钮对象及其执行代码,首要的问题便是获得其对应的执行代码过程名,并在当前工程的所有代码模块中查找其代码位置。
实践表明,按钮对象与图形图像和艺术字体一样,都属于Shape形状对象,它们都有其对应的OnAction属性,代表其被指定的宏过程代码名称。需要指出的是窗体类型按钮对应的宏过程代码一般位于工程的标准模块中,而ActiveX按钮过程代码则位于工作表代码模块中,且其对应的正确执行过程名为其按钮名与相应的事件名的连接串。为了查找某个按钮对应的过程代码,需要对VBE(Visual Basic 编辑器)的下层对象VBComponents进行搜索。VBComponents对象代表VBE编辑器下的各个代码模块VBComponent。通过对某一VBComponent的下一层对象CodeModule的相关属性的访问,可以获得诸如模块代码总行数等信息,也可以通过其Find方法查找指定内容的代码行。下面即为查找按钮过程、处理按钮过程代码的算法代码。
SheetsCount = ActiveWorkbook.Worksheets.Count
对所有工作表中的所有按钮对象循环
For i = 1 To SheetsCount
Set MySheet = Worksheets(i)
MySheet.Activate
For Each sh In MySheet.Shapes
sh.Visible = True
sh.Select
取得选定对象所对应的过程名
MyProname = sh.OnAction
对于ActiveX按钮,则只取得其onClick事件过程名
If sh.Type = msoOLEControlObject Then
MyProname = sh.Name amp _Click
End If
……
StartLine、StartCol为设置查找按钮过程名的开始行、列序号,并在代码查找成功时 返回所在的代码行、列序号
StartLine = 1
StartCol = 1
Set MyCoponent = Application.VBE.ActiveVBProject.VBComponents
在各代码模块中查找按钮过程
For Each ch In MyCoponent
If sh.Type = msoOLEControlObject And ch.Name gt sh.Parent.CodeName Then
GoTo Label4
End If
本代码模块的代码总行数
LinesCount = ch.CodeModule.CountOfLines
Endline = LinesCount
忽略注释行,查找正确的过程头部位置
Do While ch.CodeModule.Find(Sub amp MyProname amp (), StartLine, StartCol, Endline, 1, False, False) And Left(Trim(ch.CodeModule.Lines(StartLine, 1)), 1) =
StartLine = StartLine + 1
StartCol = 1
Endline = LinesCount
Loop
找到了过程头部位置
If ch.CodeModule.Find(Sub amp MyProname amp (), StartLine, StartCol, LinesCount, 1, False, False) And ch.CodeModule.ProcOfLine(St
您可能关注的文档
- Delphi 中动态链接库(DLL)的建立和使用_计算机论文.doc
- Delphi常用应用函数_计算机论文.doc
- DeST 应用与发展_工程建筑论文.doc
- DeST在空调设备性能检证(Commissioning)上的应用_工程建筑论文.doc
- DES算法实现过程分析_计算机论文.doc
- Development of On-line Information Dissemination for Distance Learning in Bangladesh _计算机网络论文.doc
- Director与Flash在多媒体系统开发中的差异分析 _计算机论文.doc
- DOS下DSP播音的编程 _计算机论文.doc
- DOS界面下通用图形编辑软件的设计_计算机论文.doc
- DOS真彩色模式下真彩色图像显示技术_计算机论文.doc
- 人教版语文八年级下册第27课《岳阳楼记》课件.ppt
- 第五单元 家族的记忆 单元双基测验1(人教版选修《中国小说欣赏》).doc
- Unit5SectionB(1a-2b)课件人教版英语七年级下册.pptx
- 北京四中高考政治二轮复习资源专题7国际社会与对外政策(学生版).doc
- 广西桂林市2021届高三上学期第一次联合调研考试文科综合历史试题含答案.docx
- 小学生安全急救科普知识(1).pptx
- 六年级数学下册第6单元整理和复习3统计与概率第1课时统计1课件新人教版2.ppt
- 第10讲《水浒传》整本书阅读(原卷版).docx
- (小升初分班考)2026年六年级下册数学小升初重点校分班考押题卷(苏教版)(含答案与解析).docx
- 七年级下册数学人教版(2025)期末四步复习法-(5)不等式与不等式组(含答案).pdf
文档评论(0)