Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 使用ProcBodyLine从过程中获取第一条实线_Vba - Fatal编程技术网

Vba 使用ProcBodyLine从过程中获取第一条实线

Vba 使用ProcBodyLine从过程中获取第一条实线,vba,Vba,我使用ProcBodyLine获取过程的第一行,以便在运行时在某个过程中动态插入代码。我使用的代码与我编写的代码相同 我面临一个问题,即使用“u”分隔符在多行中定义的过程: 这是变更前的程序: 这是插入代码后的结果: ProcBodyLine非常清楚:过程的第一行是Sub、Function或Property语句出现的那一行。但它没有说明如何获得语句的结尾 当定义仅使用一行时,根本没有问题。有一种方法可以知道真正的第一个代码行(不是定义)并得到以下结果 VBA不允许在续行符号后添加内联注释,行

我使用ProcBodyLine获取过程的第一行,以便在运行时在某个过程中动态插入代码。我使用的代码与我编写的代码相同

我面临一个问题,即使用“u”分隔符在多行中定义的过程:

这是变更前的程序:

这是插入代码后的结果:

ProcBodyLine非常清楚:过程的第一行是Sub、Function或Property语句出现的那一行。但它没有说明如何获得语句的结尾

当定义仅使用一行时,根本没有问题。有一种方法可以知道真正的第一个代码行(不是定义)并得到以下结果


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

您不能返回第一行的最后三个字符并检查它们是否为
?如果是,您希望将第一行与第二行相结合(甚至可能是第三行,依此类推……)。顺便说一句,我觉得你截图中的红色语法有点不对劲……是的,实际上我有这个解决方案,但我想知道是否有任何官方功能/方法可以实现。官方?陛下可能不会。