Public mdlName As String, procName As String
Public Function GetFuncModule(lineNum As Long, Optional basName As String)
On Error GoTo Err_H
Dim obj As Object, objType As String
Set obj = CodeContextObject
objType = Nz(DLookup("[Type]", "MSysObjects", "[Name] = '" & obj.Name & "'"), vbNullString)
Err_IsNotObject:
Select Case objType
Case -32768
mdlName = "Form_" & obj.Name
procName = Application.VBE.ActiveVBProject.VBComponents(mdlName).CodeModule.ProcOfLine(lineNum, vbext_pk_Proc)
Case -32764
mdlName = "Report_" & obj.Name
procName = Application.VBE.ActiveVBProject.VBComponents(mdlName).CodeModule.ProcOfLine(lineNum, vbext_pk_Proc)
Case Else
' It's not a form or report object. It's a Standard Module or Class
mdlName = basName
procName = Application.VBE.ActiveVBProject.VBComponents(basName).CodeModule.ProcOfLine(lineNum, vbext_pk_Proc)
End Select
MsgBox "Module: " & mdlName & vbNewLine & "Procedure: " & procName
Exit_Err_H:
Exit Function
Err_H:
If Err.Number = 7955 Then
GoTo Err_IsNotObject
Else
MsgBox Err.Number
Resume Exit_Err_H
End If
End Function