VBA代码编程方法详解(七)
时 间:2010-10-26 10:56:50
作 者:江羽 ID:3967 城市:南昌
摘 要:VBA代码编程方法详解(第七部分)
正 文:
6.3 判断过程是否存在
'函数功能:判断指定过程是否存在,存在输出为真
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)
End With
End Function
'示例一:指定过程名,但不指定部件
Debug.Print VBProcExists("过程名")
'示例二:指定过程名"ShowProcedureInfo",并指定部件名
Debug.Print VBProcExists("过程名","部件名")
'示例三:指定过程名,并通过索引指定部件
Debug.Print VBProcExists("过程名",3)
6.4 获得指定行所在过程名
'---------------------------------------------------------------------
'函数功能:获得指定行过程名
'---------------------------------------------------------------------
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
'获得指当前代码窗口行号第26行代码所在过程名
Call GetLineProcName(26)
Access软件网QQ交流群 (群号:483923997) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 【Access小作品】简单的待...(04.30)
- 【Access窗体导出PDF】...(04.08)
- 【Access窗体导出PDF】...(04.07)
- Access两种方式实现即时更...(03.01)
- Access隐藏与显示lacc...(01.12)
- 【Access高效办公】将每个...(12.23)
- Access21点游戏源代码(12.13)
- 【Access窗体导出Exce...(11.15)
- 【Access开发】Acces...(11.14)
学习心得
最新文章
- Access快速开发平台企业版--...(05.09)
- 新版铁路工程管理系统V2.0(05.08)
- Access快速开发平台企业版--...(05.07)
- 【Access Call用法学习】...(05.06)
- access软件网站长张志简介 (05.05)
- 精美简单实用的系统面板(05.03)
- 【Access小作品】简单的待办任...(04.30)
- 从另一个ACCESS数据库批量导入...(04.29)
- Access日期格式的数据导出Ex...(04.28)
- ACCESS精华集锦资料.CHM(04.25)