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


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

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

六、代码模块对象(CodeModule

在诸如窗体,类或文档等部件之后表示程序代码。可用 CodeModule 对象来修改(添加、删除、编辑)与部件相关联的代码。

每个部件都与一个 CodeModule 对象相关联。但是,一个 CodeModule 对象可以与多个代码窗格CodePane相关联。

 

6.1 获得指定行代码

6.1.1 获得指定模块中指定一行或多行代码

'函数功能:指定模块指定行代码

'输入参数:CompsNameOrIndex 部件名或索引

'          CodeLine(长整)代码所在行

'          CountLines(长整)选取代码行数,默认为1

Public Function LineCodeString (ByVal CompsNameOrIndex, _

                      ByVal CodeLine As Long, _

                      Optional CountLines As Long = 1) As String

   Dim VBProj      As VBProject

   Dim VBComp     As VBComponent

   Dim CodeMod    As CodeModule

  

   Set VBProj = VBE.ActiveVBProject

   Set VBComp = VBProj.VBComponents (CompsNameOrIndex)

   Set CodeMod = VBComp.CodeModule

  

   LineCodeString = CodeMod.Lines (CodeLine, CountLines)

End Function

 

'***********************************************

'调用示例一:获得“模块1,第五行代码

Debug.Print LineCodeString("模块1",5)

 

'***********************************************

'调用示例二:获得“模块1,第一行至第六行代码

Debug.Print LineCodeString("模块1",1 ,6)

 

 

6.2 列举模块中所有过程及类型

6.2.1获得过程种类自定义函数

' 函数功能:获得过程种类名

' 输入参数:ProcKind(过程类型常数)

Public Function ProcKindString(ByVal ProcKind As vbext_ProcKind) As String

   Select Case ProcKind

      Case vbext_pk_Get

         ProcKindString = "Property Get"

      Case vbext_pk_Let

         ProcKindString = "Property Let"

      Case vbext_pk_Set

         ProcKindString = "Property Set"

      Case vbext_pk_Proc

         ProcKindString = "Sub or Function"

      Case Else

         ProcKindString = "Unknown Type: " & CStr(ProcKind)

   End Select

End Function

6.2.2 获得指定部件中过程名及类型

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

'函数功能:列出指定模块中所有过程

'输入参数:CompsNameOrIndex 部件名或索引

'    用:自定义ProcKindString函数

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

Public Function ListProcedures(CompsNameOrIndex As Variant) As String

   Dim VBProj     As VBProject            '工程

   Dim VBComp    As VBComponent        '部件

   Dim CodeMod    As CodeModule         '代码模块

   Dim ProcKind    As vbext_ProcKind       '过程类型

   Dim LineNum    As Long                '代码行

   Dim sProcKind   As String                '过程类型名

   Dim ProcName   As String                '过程名

  

   '实例化当前活动的工程

   Set VBProj = VBE.ActiveVBProject

   '实例化工程对象集合

   Set VBComp = VBProj.VBComponents(CompsNameOrIndex)

   '实例化代码模块

   Set CodeMod = VBComp.CodeModule

  

   With CodeMod

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

      LineNum = .CountOfDeclarationLines + 1

      '获得指定行所在过程名

      ProcName = .ProcOfLine(LineNum, ProcKind)

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

      Do Until LineNum >= .CountOfLines

         sProcKind = sProcKind & ProcName & Space(3) & _

ProcKindString(ProcKind) & vbLf

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

         LineNum = LineNum + .ProcCountLines(ProcName, ProcKind)

         ProcName = .ProcOfLine(LineNum, ProcKind)

      Loop

   End With

  

   ListProcedures = sProcKind

End Function

 

'***********************************************

'调用示例:获取"Form_窗体1"中所有过程名及类型

Debug.Print ListProcedures("Form_窗体1")

 


  上一页 下一页


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

江羽

文章分类

文章存档

友情链接