2016-03-31 19 views
-1

In Bezug auf VBE. Wenn ein Arbeitsblatt nicht existiert, erstellt es es und fügt eine Befehlsschaltfläche in Sheet1 hinzu. Es wird auch die appr hinzufügen. Code für den privaten Unterbefehl button1_click. Das funktioniert alles in Ordnung. Dies ist Teil des bestehenden Code, der einen neue Unter hinzufügen wird:Excel VBA löschen Subcode

Dim Code as String 
Code = "Private sub CommandButton1_Click()" & vbCrLf 
[..] 
Code = Code & "End Sub" 

With ThisWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule 
    .insertlines .CountOfLines + 1, Code 

jedoch vor dem Hinzufügen, dass ‚Sub-Code‘, sollte es prüfen, ob in dem bereits vorhandenen (Objekt), um den Untercode (für CommandButton1) existiert bereits und wenn ja, löschen Sie es, bevor Sie neuen Code hinzufügen.

Antwort

0

siehe unten.

If ActiveWorkbook.VBProject.VBComponents("Sheet1").CodeModule.CountOfLines <> 0 Then 
    ActiveWorkbook.VBProject.VBComponents("Sheet1").CodeModule.DeleteLines 1, ActiveWorkbook.VBProject.VBComponents("Sheet1").CodeModule.CountOfLines 
End If 
0

Die folgenden Werke für mich, ändern Sie den Unter Namen nach Bedarf:

Dim VBCodeMod As CodeModule 
Dim StartLine As Long 
Dim HowManyLines As Long 
Set VBCodeMod = Workbooks(1).VBProject.VBComponents("Sheet1").CodeModule 
With VBCodeMod 
    StartLine = .ProcStartLine("Worksheet_BeforeRightClick", vbext_pk_Proc) 
    HowManyLines = .ProcCountLines("Worksheet_BeforeRightClick", vbext_pk_Proc) 
    .DeleteLines StartLine, HowManyLines 
End With