赞助连接

精品导读

赞助连接

阅 读 文 章

VBA在限定Excel工作表用户按钮中的应用

[来源:网上转载 (www.studa.net) | 作者:网友(未知) | 时间:2008-04-04 | 浏览: 人次 ]


        Endline = LinesCount
    Loop
    '找到了过程头部位置
    If ch.CodeModule.Find("Sub " & MyProname & "()", StartLine, StartCol, LinesCount, 1, False, False) And ch.CodeModule.ProcOfLine(StartLine, vbext_pk_Proc) = MyProname Then
    '若还没有插入规定的代码
    If Trim(ch.CodeModule.Lines(StartLine + 1, 1)) <> "'隐藏过程代码" Then
    '代码1……,在按钮过程代码的首部加入过程调用代码
    '代码2……,调整本代码行以后的已经插入的代码行调用参数
    Endif
   End If
Label4:
Next
Next
Next i
ActiveWorkbook.Save
2.2 插入过程调用代码
经过查找按钮的执行过程代码的正确位置,就能够限定其执行的有效性。本文的处理方法是,在按钮的对应过程代码的首部加入两行代码,如:
'隐藏过程代码
Call 模块5.隐藏过程代码(256,73,”Sheet2”,2,3)
可以看出第一行代码是一注释行,第二行代码是一过程调用。正是这一过程调用,在按钮点击时首先被执行,从而实现了对按钮执行的准确计数,并在按钮执行到达规定次数时,阻止其执行。
下面的代码通过对找到的按钮过程所在代码模块VBComponent的下层对象CodeModule采用InsertLines方法,首先在按钮对应过程的首部插入两行临时代码,然后通过该对象的ReplaceLine方法,将它们分别替换为正确的上述两行代码。这样先插入代码行、后替换代码行的目的是,在插入代码行后便于获得准确的过程起始代码行号,从而为下面的替换代码行语句准备正确的参数。下面即是上述查找按钮过程代码中“代码1”位置处的算法代码,其功能是在查找到的按钮过程代码的首部加入上述的两行代码:
ModuleName = Application.VBE.SelectedVBComponent.Nam' 获得过程所处的代码模块名
  CodeName = ch.Name
  ' 插入两行临时代码行
  ch.CodeModule.InsertLines StartLine + 1, "'插入代码行1"
  ch.CodeModule.InsertLines StartLine + 2, "'插入代码行2"
  ' 获得模块代码总行数、过程起始行号、过程代码总行数
  LinesCount = ch.CodeModule.CountOfLines
' 过程代码起始行号
  ProcStartline = ch.CodeModule.ProcStartline(MyProname, vbext_pk_Proc)
' 过程代码总行数
  ProcCountLines = ch.CodeModule.ProcCountLines(MyProname, vbext_pk_Proc)
' 替换为两行正确的代码行
  ch.CodeModule.ReplaceLine StartLine + 1, "'隐藏过程代码"
  ch.CodeModule.ReplaceLine StartLine + 2, "Call " & ModuleName & ".隐藏过程代码(" & ProcStartline & "," & ProcCountLines & "," & """" & CodeName & """" & "," & i & "," & sh.ZOrderPosition & ")"
此外,当按钮被点击执行并进入到插入的调用过程内部时,还需要确定哪个按钮被执行、执行的次数情况、以及执行按钮的对应过程代码的行范围等情况,以便准确地实施对执行按钮及其过程代码的控制,所以在上述为按钮过程替换为正确的过程调用代码的同时,需要添入正确的下列五个过程调用参数:
(1)按钮的对应过程头部所在代码模块中的代码起始行号;
(2)按钮过程的对应代码行数;
(3)按钮过程所处的代码模块名;
(4)按钮所在的工作表序号;
(5)按钮在所在工作表上的Shape形状对象集合的序号。
从上面的插入代码中可以看出获得这些参数的方法。针对上例的过程调用语句:Call 模块5.隐藏过程代码(256,73,”Sheet2”,2,3),其参数含义是:当第2个工作表中的第3个Shape对象(按钮)执行次数到达规定次数时,则将名称为“Sheet2”的代码模块中从256行起的73行代码设为无效,并将该按钮进行隐藏。
TAG标签 : 按钮 应用 用户 工作 限定 代码 过程 执行 If 对象 Str1

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.