使用.DeleteLines从模块VBA中删除特定代码

时间:2016-08-03 14:22:02

标签: excel vba excel-vba

我想在VBA中使用.DeleteLines功能。由于我没有删除模块中的所有行,我需要有针对性的方法。我假设有一个像Find这样的函数(" FooBar")。LineNumber,但我无法在这里找到它/ google:

https://msdn.microsoft.com/en-us/library/office/gg264546.aspx

Sub Deletings()
    With Workbooks("ClassExperiment.xlsm").VBProject.VBComponents("Module2").CodeModule
        .DeleteLines(HowDoIGetThisValue, 0)
    End With
End Sub

帮助表示赞赏。

2 个答案:

答案 0 :(得分:4)

如果您要删除整个过程,则可以使用ProcStartLine属性找到其位置,并使用ProcCountLines找到行数。

Dim module As CodeModule
Set module = Workbooks("ClassExperiment.xlsm").VBProject.VBComponents("Module2").CodeModule

Dim start As Long
Dim lines As Long
With module
    start = .ProcStartLine("button_Click", vbext_pk_Proc)
    lines = .ProcCountLines("button_Click", vbext_pk_Proc)
    .DeleteLines start, lines
End With

警告:

这应该是显而易见的,但无论如何我都会把它扔出去。 不要 使用此(或任何其他方法)在调试模式下更改运行代码的模块。这是break your workbook的好方法。

答案 1 :(得分:2)

Sub test()

Dim vb As VBComponent
Dim i As Integer

Set vb = ThisWorkbook.VBProject.VBComponents("Module2")

For i =vb.CodeModule.CountOfLines to 1 step -1

    If InStr(1, vb.CodeModule.Lines(i, 1), "'   remove") <> 0 Then
        vb.CodeModule.DeleteLines i, 1
    End If

Next i

End Sub

我还建议使用条件语句来允许执行代码行,而不是删除它,何时放回?如果您希望自动化这一点,这可能会导致问题,因为您需要知道它来自何处。