Свойство 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 и обратная связь.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по