excel - 通过宏查找代码并将其添加到模块中

标签 excel vba

我正在尝试在 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/

相关文章:

VBA ParamArray "conditions"在 IF 语句中使用

vba - 如何部署 Outlook 宏?

vba - 使用vba宏从文件夹中txt文件的标题中删除2行

来自数据透视表列的 Excel 饼图

vba - 如何将工作表 A 保存到文件夹 A 并将工作表 B 保存到文件夹 B?

Excel根据级别生成基于公式的序列

ms-access - 将记录集导出到电子表格

python - 如何基于 Excel 工作表创建特定的数据框?

vba - 如何根据需要将焦点放在文本框上

vba - 如何清除合并单元格的内容