Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-教程

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

时 间:2010-10-26 09:48:52
作 者:江羽   ID:3967  城市:南昌
摘 要: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群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助