Свойство Module.ProcOfLine (Access)

Свойство ProcOfLine возвращает имя процедуры, содержащей указанную строку в стандартном модуле или модуле класса. Строка, доступная только для чтения.

Синтаксис

expression. ProcOfLine (Line, ProcKind)

Выражение Переменная, представляющая объект Module .

Параметры

Имя Обязательный или необязательный Тип данных Описание
Line Обязательный Long Номер строки в модуле.
ProcKind Обязательный vbext_ProcKind Тип процедуры. Возможные параметры см. в разделе Примечания.

Замечания

Аргумент ProcKind может быть одной из следующих vbext_ProcKind констант:

Константа Описание
vbext_pk_Get Процедура Property Get .
vbext_pk_Let Процедура Property Let .
vbext_pk_Proc Процедура Sub или Function .
vbext_pk_Set Процедура набора свойств .

Для любого заданного номера строки свойство ProcOfLine возвращает имя процедуры, содержащей данную строку. Так как примечания и константы компиляции, непосредственно предшествующие определению процедуры, считаются частью этой процедуры, свойство ProcOfLine может возвращать имя процедуры для строки, которая не находится в тексте процедуры.

Свойство ProcStartLine указывает строку, с которой начинается процедура; Свойство ProcBodyLine указывает строку, с которой начинается определение процедуры (текст процедуры).

Обратите внимание, что аргумент ProcKind указывает, принадлежит ли строка процедуре Sub или Function , процедуре Property Get , процедуре Property Let или процедуре Property Set . Чтобы определить, в каком типе процедуры находится строка, передайте переменную типа Long в свойство ProcOfLine , а затем проверьте значение этой переменной.

Примечание.

Свойство ProcOfLine обрабатывает процедуры Sub и Function аналогичным образом, но различает каждый тип процедуры Property.

Пример

Следующая процедура функции перечисляет имена всех процедур в указанном модуле.

Public Function AllProcs(ByVal strModuleName As String) 
 
 Dim mdl As Module 
 Dim lngCount As Long 
 Dim lngCountDecl As Long 
 Dim lngI As Long 
 Dim strProcName As String 
 Dim astrProcNames() As String 
 Dim intI As Integer 
 Dim strMsg As String 
 Dim lngR As Long 
 
 ' Open specified Module object. 
 DoCmd.OpenModule strModuleName 
 
 ' Return reference to Module object. 
 Set mdl = Modules(strModuleName) 
 
 ' Count lines in module. 
 lngCount = mdl.CountOfLines 
 
 ' Count lines in Declaration section in module. 
 lngCountDecl = mdl.CountOfDeclarationLines 
 
 ' Determine name of first procedure. 
 strProcName = mdl.ProcOfLine(lngCountDecl + 1, lngR) 
 
 ' Initialize counter variable. 
 intI = 0 
 
 ' Redimension array. 
 ReDim Preserve astrProcNames(intI) 
 
 ' Store name of first procedure in array. 
 astrProcNames(intI) = strProcName 
 
 ' Determine procedure name for each line after declarations. 
 For lngI = lngCountDecl + 1 To lngCount 
 ' Compare procedure name with ProcOfLine property value. 
 If strProcName <> mdl.ProcOfLine(lngI, lngR) Then 
 ' Increment counter. 
 intI = intI + 1 
 strProcName = mdl.ProcOfLine(lngI, lngR) 
 ReDim Preserve astrProcNames(intI) 
 ' Assign unique procedure names to array. 
 astrProcNames(intI) = strProcName 
 End If 
 Next lngI 
 
 strMsg = "Procedures in module '" & strModuleName & "': " & vbCrLf & vbCrLf 
 For intI = 0 To UBound(astrProcNames) 
 strMsg = strMsg & astrProcNames(intI) & vbCrLf 
 Next intI 
 
 ' Message box listing all procedures in module. 
 MsgBox strMsg 
End Function

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.