VBA代码编程方法详解(七)-江羽
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-教程


VBA代码编程方法详解(七)

发表时间:2010/10/26 10:56:50 评论(1) 浏览(7575)  评论 | 加入收藏 | 复制
   
摘 要:VBA代码编程方法详解(第七部分)
正 文:

6.3 判断过程是否存在

6.3.1 判断指定过程是否存在自定义函数

'函数功能:判断指定过程是否存在,存在输出为真

Public Function VBProcExists(ByVal VBProcName As String, _

                         Optional VBCompNameOrIndex As Variant) As Boolean

   Dim VBProj           As VBProject

   Dim VBCodeModule    As CodeModule

   Dim ProcKind         As vbext_ProcKind        '过程类型

   Dim LineNum         As Long                 '代码行

   Dim ProcName        As String                 '获得过程名

  

   Set VBProj = VBE.ActiveVBProject

   '如不指定部件及为当前窗格代码模块

   If VBCompNameOrIndex = "" Then

      Set VBCodeModule = VBE.ActiveCodePane.CodeModule

   Else

      Set VBCodeModule = VBProj.VBComponents(VBCompNameOrIndex).CodeModule

   End If

  

   With VBCodeModule

      '获得代码所在起始行,等于申明行加一

      LineNum = .CountOfDeclarationLines + 1

      '获得指定行所在过程名

      ProcName = .ProcOfLine (LineNum, ProcKind)

      '申明后第一行开始循环至代码结束,将获取过程名及类型名输出

      Do Until LineNum >= .CountOfLines

         '进行二进制比对,比对结果等零,则存在

         If StrComp(VBProcName, ProcName) = 0 Then

            VBProcExists = True

            Exit Do

         End If

         '代码行数累加,将根据所在行获得过程名

         LineNum = LineNum + .ProcCountLines(ProcName, ProcKind)

         ProcName = .ProcOfLine(LineNum, ProcKind)

      Loop

   End With

End Function

6.3.2 调用自定义函数示例

'示例一:指定过程名但不指定部件

Debug.Print VBProcExists("过程名")

 

'示例二:指定过程名"ShowProcedureInfo"并指定部件名

Debug.Print VBProcExists("过程名","部件名")

 

'示例三:指定过程名,并通过索引指定部件

Debug.Print VBProcExists("过程名",3)

 


         6.4 获得指定行所在过程名

6.4.1 获得指定行过程名自定义函数

'---------------------------------------------------------------------

'函数功能:获得指定行过程名

'---------------------------------------------------------------------

Public Function GetLineProcName (ByVal LineNum As Long) As String

   Dim CodeMod    As CodeModule          '申明代码模块

   Dim VBpane     As VBIDE.CodePane      '代码模块所在窗格   

   Dim NumLines   As Long                 '代码行数

   Dim ProcName   As String                 '过程名

   Dim ProcKind    As vbext_ProcKind        '过程类型

  

   '实例化为当前代码窗口

   Set VBpane = VBE.ActiveCodePane

   '实例化为当前窗格代码模块

   Set CodeMod = VBpane.CodeModule

  

   With CodeMod

      '获得代码起始行行数

      NumLines = .CountOfDeclarationLines + 1

      '判断是否为申明代码行

      If LineNum > NumLines Then

         ProcName = .ProcOfLine (LineNum, ProcKind)

      Else

         GetLineProcName = -1   '如为申明代码行,则输出为负1

         Exit Function

      End If

   End With

   '过程名输出

   GetLineProcName = ProcName

End Function

6.4.2 调用指定行过程名函数示例

'获得指当前代码窗口行号第26行代码所在过程名

 Call GetLineProcName(26)

 

     (已对判断过程是否存在代码进行更新 )     


  上一页 下一页


Access软件网交流QQ群(群号:198465573)
 
 相关文章
VBA代码编程方法详解(五)  【江羽  2010/10/26】
VBA代码编程方法详解(六)  【江羽  2010/10/26】
VBA代码编程方法详解(八)  【江羽坛  2010/10/29】
VBA代码编程方法详解(九)  【江羽  2010/10/30】
VBA代码编程方法详解(十)  【江羽  2010/10/30】
常见问答
技术分类
相关资源
文章搜索
关于作者

江羽

文章分类

文章存档

友情链接