我正在尝试在 VBA 中创建代码,该代码将搜索模块,查找特定文本,然后在同一行中的该文本之前添加一个字符串。例如,每次模块中显示“yo”时,我希望将其更改为“Add This yo”。
下面的代码成功找到了模块中显示“yo”的实例,但它没有在我想要的位置添加文本。相反,文本被添加到模块的最顶部(甚至不在子模块内)。如何将此文本添加到“yo”之前?
Public Sub Edit()
Dim vb As VBComponent
Dim i As Long
Dim intFoundLine As Integer
Dim strSearchPhrase As String
Set vb = ThisWorkbook.VBProject.VBComponents("Module2")
strSearchPhrase = "yo"
intLinesNr = vb.CodeModule.CountOfLines
For i = 1 To intLinesNr
If vb.CodeModule.Find(strSearchPhrase, i, 1, -1, -1) Then
intFoundLine = i
MsgBox "Found at " & intFoundLine
vb.CodeModule.AddFromString ("Add This")
End If
Next
End Sub
最佳答案
用新文本替换该行:
vb.CodeModule.ReplaceLine i, "Add This" & vb.CodeModule.Lines(i, 1)
根据 Mathieu Guindon 的回答,以下是我处理搜索短语的所有实例的方法:
Do While vb.CodeModule.Find(strSearchPhrase, i, 1, -1, -1)
vb.CodeModule.ReplaceLine i, "Add This" & vb.CodeModule.Lines(i, 1)
i = i + 1
Loop
'
关于excel - 通过宏查找代码并将其添加到模块中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57079339/