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