CodeModule.Find方法更改变量的值(Find方法VBA加载项对象模型)

CodeModule.Find方法更改变量的值(Find方法VBA加载项对象模型),vba,excel,variables,vbe,Vba,Excel,Variables,Vbe,我试图在当前VBProject中搜索过程名称的实例。为此,我使用CodeModule.Find方法(详细信息),该方法要求: 搜索项(我提供了一个字符串变量) 起始行(我提供了一个long变量) 开始列(我使用第1列) 结束行(我提供了一个long变量),以及 结束列(我使用第500列) 出于某种原因,每次调用此方法时,它都会将st_line和en_line变量的值更改为不同的数字。在我提供的简单示例中,似乎我不需要多次使用这些数字,但在我的应用程序中,我需要,并且该方法不断更改它们 代码:

我试图在当前
VBProject
中搜索过程名称的实例。为此,我使用
CodeModule.Find
方法(详细信息),该方法要求:

  • 搜索项(我提供了一个
    字符串
    变量)
  • 起始行(我提供了一个
    long
    变量)
  • 开始列(我使用第1列)
  • 结束行(我提供了一个
    long
    变量),以及
  • 结束列(我使用第500列)
出于某种原因,每次调用此方法时,它都会将
st_line
en_line
变量的值更改为不同的数字。在我提供的简单示例中,似乎我不需要多次使用这些数字,但在我的应用程序中,我需要,并且该方法不断更改它们

代码:

一旦前面有三个星号的行被运行(不管它是否真正找到了我们正在搜索的字符串),
st_line
en_line
的值都被更改为
20

该方法所做的似乎是将
st_行
en_行
变量更改为该方法查找搜索项第一个实例的行


如何使用此方法并保留变量值?

来自本主题文档:

我需要一张斯达林牌的。指定要开始搜索的行的长字符串;将设置为匹配的行(如果找到)。第一行是1号

看起来VBC.CodeModule.Find正在更改代码行。它对端点的影响类似:

需要结束行。指定匹配的最后一行(如果找到)的长字符串。最后一行可以指定为1

您必须使用另一对设置为相同值的变量,因此更改:

st_line = 5
en_line = 100
Set VBC = ThisWorkbook.VBProject.VBComponents("ThisWorkbook")

***If VBC.CodeModule.Find(search_String, st_line, 1, en_line, 500) = True Then
    MsgBox "Found our target."
End If


来源:

来自本主题的文档:

我需要一张斯达林牌的。指定要开始搜索的行的长字符串;将设置为匹配的行(如果找到)。第一行是1号

看起来VBC.CodeModule.Find正在更改代码行。它对端点的影响类似:

需要结束行。指定匹配的最后一行(如果找到)的长字符串。最后一行可以指定为1

您必须使用另一对设置为相同值的变量,因此更改:

st_line = 5
en_line = 100
Set VBC = ThisWorkbook.VBProject.VBComponents("ThisWorkbook")

***If VBC.CodeModule.Find(search_String, st_line, 1, en_line, 500) = True Then
    MsgBox "Found our target."
End If


资料来源:

经过更多的研究,我发现如果我在方法中不包含st_线和en_线变量,那么它们会保留它们的值。经过更多的研究,我发现如果我在方法中不包含st_线和en_线变量,那么它们会保留它们的值。呃,我怎么会错过呢?感谢您实际解释文档!啊,我怎么会错过呢?感谢您实际解释文档!
st_line = 5
en_line = 100
' temporary variables
temp_st_line = st_line
temp_en_line = en_line
Set VBC = ThisWorkbook.VBProject.VBComponents("ThisWorkbook")

***If VBC.CodeModule.Find(search_String, temp_st_line, 1, temp_en_line, 500) = True Then
    MsgBox "Found our target."
End If