Usuń procedurę z modułu za pomocą VBA w programie Microsoft Excel

Anonim

W tym artykule stworzymy makro, aby usunąć kolejne makro z modułu.

Używamy Module1, który zawiera SampleProcedure jako przykładowe makro, które chcemy usunąć.

Wyjaśnienie kodu

Ustaw VBCM = WB.VBProject.VBComponents(DeleteFromModuleName).CodeModule

Powyższy kod służy do tworzenia obiektu zdefiniowanego modułu.

ProcStartLine = VBCM.ProcStartLine (ProcedureName, vbext_pk_Proc)

Powyższy kod służy do uzyskania początkowego numeru linii zdefiniowanej procedury.

ProcLineCount = VBCM.ProcCountLines (ProcedureName, vbext_pk_Proc)

Powyższy kod służy do uzyskania liczby wierszy w zdefiniowanej procedurze.

VBCM.DeleteLines ProcStartLine, ProcLineCount

Powyższy kod służy do usuwania wszystkich wierszy w ramach zdefiniowanej procedury.

Proszę postępować zgodnie z poniższym kodem!

 Option Explicit Sub DeleteProcedureCode(ByVal DeleteFromModuleName As String, ByVal ProcedureName As String) 'Deklarowanie zmiennych Dim VBCM As CodeModule, ProcStartLine As Long, ProcLineCount As Long Dim WB As Workbook On Error Resume Next 'Tworzenie obiektu aktywnego skoroszytu Ustaw WB = ActiveWorkbook 'Creating obiekt modułu skoroszytu Set VBCM = WB.VBProject.VBComponents(DeleteFromModuleName).CodeModule 'Sprawdzenie, czy procedura istnieje w module codemodule Jeśli nie VBCM jest niczym Then ProcStartLine = 0 'Funkcja przypisująca wiersz nr. linii startu dla procedury ProcStartLine = VBCM.ProcStartLine(ProcedureName, vbext_pk_Proc) Jeżeli ProcStartLine > 0 Wtedy 'Funkcja przypisz nr. linii w procedurze ProcLineCount = VBCM.ProcCountLines(ProcedureName, vbext_pk_Proc) 'Usuń wszystkie wiersze w procedurze VBCM.DeleteLines ProcStartLine, ProcLineCount End If Set VBCM = Nothing End If On Error GoTo 0 End Sub Sub CallingProcedure() 'Deklarowanie zmiennych Dim ModuleName, ProcedureName As String 'Pobieranie wartości dla nazwy modułu i procedury z pól tekstowych ModuleName = Sheet1.TextBox1.Value ProcedureName = Sheet1.TextBox2.Value 'Wywołanie makra DeleteProcedureCode DeleteProcedureCode ModuleName, ProcedureName End Sub 

Jeśli podobał Ci się ten blog, podziel się nim ze znajomymi na Facebooku. Możesz również śledzić nas na Twitterze i Facebooku.

Chcielibyśmy usłyszeć od Ciebie, daj nam znać, jak możemy poprawić naszą pracę i uczynić ją lepszą dla Ciebie. Napisz do nas na stronie e-mail