Изтрийте процедура от модул, използващ VBA в Microsoft Excel

Anonim

В тази статия ще създадем макрос, за да изтрием друг макрос от модул.

Използваме Module1, който съдържа SampleProcedure като примерен макрос, който искаме да изтрием.

Обяснение на кода

Задайте VBCM = WB.VBProject.VBCcomponents (DeleteFromModuleName) .CodeModule

Горният код се използва за създаване на обект от дефинирания модул.

ProcStartLine = VBCM.ProcStartLine (Име на процедура, vbext_pk_Proc)

Горният код се използва за получаване на номера на началния ред на дефинираната процедура.

ProcLineCount = VBCM.ProcCountLines (ProcedureName, vbext_pk_Proc)

Горният код се използва за получаване на броя на редовете в дефинираната процедура.

VBCM.DeleteLines ProcStartLine, ProcLineCount

Горният код се използва за изтриване на всички редове в рамките на дефинираната процедура.

Моля, следвайте кода по -долу

 Опция Изрично Sub DeleteProcedureCode (ByVal DeleteFromModuleName As String, ByVal ProcedureName As String) „Деклариране на променливи Dim VBCM като CodeModule, ProcStartLine като дълъг, ProcLineCount като дълъг Dim WB Като работна книга На грешка Възобновяване Следваща 'Създаване на активна работна книга обект на модул на работна книга Задайте VBCM = WB.VBProject.VBCcomponents (DeleteFromModuleName) .CodeModule 'Проверка дали процедурата съществува в кодовия модул Ако не VBCM е нищо, тогава ProcStartLine = 0' Функция, задаваща ред № на началния ред за процедурата ProcStartLine = VBCM.ProcStartLine (ProcedureName, vbext_pk_Proc) Ако ProcStartLine> 0 Тогава 'Функцията присвоява no. от редове в процедурата ProcLineCount = VBCM.ProcCountLines (ProcedureName, vbext_pk_Proc) 'Изтрийте всички редове в процедурата VBCM.DeleteLines ProcStartLine, ProcLineCount Край Ако е зададен VBCM = Нищо Край Ако е Грешка GoTo 0 Край на Sub Subblesing Calling (Procedure Decode)' Dim ModuleName, ProcedureName As String 'Получаване на стойност за име на модул и процедура от текстови полета ModuleName = Sheet1.TextBox1.Value ProcedureName = Sheet1.TextBox2.Value' Извикване на DeleteProcedureCode макрос DeleteProcedureCode ModuleName, ProcedureName End Sub 

Ако този блог ви е харесал, споделете го с приятелите си във Facebook. Също така можете да ни следвате в Twitter и Facebook.

Ще се радваме да чуем от вас, уведомете ни как можем да подобрим работата си и да я направим по -добра за вас. Пишете ни на имейл сайта