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交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 合并列数据到一个文本框的示例;...(05.06)
- 通过命令按钮让Access列表...(04.24)
- 统计当月之前(不含当月)的记录...(03.11)
- 【Access Inputbo...(03.03)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)

学习心得
最新文章
- 仓库管理实战课程(16)-联合查询...(05.07)
- 合并列数据到一个文本框的示例;输出...(05.06)
- 仓库管理实战课程(15)-月度库存...(04.30)
- Access选择打印机、横纵向、纸...(04.29)
- 仓库管理实战课程(14)-出库功能...(04.26)
- 通过命令按钮让Access列表框指...(04.24)
- 仓库管理实战课程(13)-入库功能...(04.21)
- Access控件美化之--美化按钮...(04.19)
- Access多行文本按指定字符筛选...(04.18)
- Microsoft Access数...(04.18)