Vba 使用ProcBodyLine从过程中获取第一条实线
我使用ProcBodyLine获取过程的第一行,以便在运行时在某个过程中动态插入代码。我使用的代码与我编写的代码相同 我面临一个问题,即使用“u”分隔符在多行中定义的过程: 这是变更前的程序: 这是插入代码后的结果: ProcBodyLine非常清楚:过程的第一行是Sub、Function或Property语句出现的那一行。但它没有说明如何获得语句的结尾 当定义仅使用一行时,根本没有问题。有一种方法可以知道真正的第一个代码行(不是定义)并得到以下结果Vba 使用ProcBodyLine从过程中获取第一条实线,vba,Vba,我使用ProcBodyLine获取过程的第一行,以便在运行时在某个过程中动态插入代码。我使用的代码与我编写的代码相同 我面临一个问题,即使用“u”分隔符在多行中定义的过程: 这是变更前的程序: 这是插入代码后的结果: ProcBodyLine非常清楚:过程的第一行是Sub、Function或Property语句出现的那一行。但它没有说明如何获得语句的结尾 当定义仅使用一行时,根本没有问题。有一种方法可以知道真正的第一个代码行(不是定义)并得到以下结果 VBA不允许在续行符号后添加内联注释,行
VBA不允许在续行符号后添加内联注释,行续行符号前必须有空格,因此,如果ProcBodyLine行以空格和
\uuuu
结尾,则它是续行。即使过程在以注释和延续符号结尾的单行上有签名,这也是正确的,因为在这种情况下,它将是注释的延续
'I don't know why declaring CodeModule as VBIDE.CodeModule causes a type mismatch
Public Function GetFirstLineAfterSignature(ByVal CodeModule As Object, ByVal ProcName As String, ByVal ProcKind As VBIDE.vbext_ProcKind) As Long
GetFirstLineAfterSignature = CodeModule.ProcBodyLine(ProcName, ProcKind)
Do While Right$(CodeModule.Lines(GetFirstLineAfterSignature, 1), 2) = " _"
GetFirstLineAfterSignature = GetFirstLineAfterSignature + 1
Loop
GetFirstLineAfterSignature = GetFirstLineAfterSignature + 1
End Function
您不能返回第一行的最后三个字符并检查它们是否为
,
?如果是,您希望将第一行与第二行相结合(甚至可能是第三行,依此类推……)。顺便说一句,我觉得你截图中的红色语法有点不对劲……是的,实际上我有这个解决方案,但我想知道是否有任何官方功能/方法可以实现。官方?陛下可能不会。