2016-03-31 2 views
-1

Относительно VBE. Если рабочий лист не существует, он создаст его и добавит командную кнопку в Sheet1. Он также добавит appr. код для частного sub commandbutton1_click. Все работает отлично. Это часть существующего кода, который будет добавить новый подраздел:Excel vba delete sub code

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 

Однако, прежде чем добавить, что «дополнительный код», он должен проверить, если в уже существующем (объект) код суб (для CommandButton1) уже существует и если да, то удалите его перед добавлением нового кода.

ответ

0

смотрите ниже.

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

следующие работы для меня изменить суб имя, необходимо:

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