我想在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
帮助表示赞赏。
答案 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
我还建议使用条件语句来允许执行代码行,而不是删除它,何时放回?如果您希望自动化这一点,这可能会导致问题,因为您需要知道它来自何处。