Een procedure verwijderen uit een module met VBA in Microsoft Excel

Anonim

In dit artikel zullen we een macro maken om een ​​andere macro uit een module te verwijderen.

We gebruiken Module1, die SampleProcedure bevat als de voorbeeldmacro, die we willen verwijderen.

Code uitleg

Stel VBCM = WB.VBProject.VBComponents (DeleteFromModuleName).CodeModule in

De bovenstaande code wordt gebruikt om een ​​object van de gedefinieerde module te maken.

ProcStartLine = VBCM.ProcStartLine(Procedurenaam, vbext_pk_Proc)

De bovenstaande code wordt gebruikt om het startregelnummer van de gedefinieerde procedure te krijgen.

ProcLineCount = VBCM.ProcCountLines(Procedurenaam, vbext_pk_Proc)

De bovenstaande code wordt gebruikt om het aantal regels in de gedefinieerde procedure te krijgen.

VBCM.DeleteLines ProcStartLine, ProcLineCount

De bovenstaande code wordt gebruikt om alle regels binnen de gedefinieerde procedure te verwijderen.

Volg hieronder voor de code:

 Optie Explicit Sub DeleteProcedureCode(ByVal DeleteFromModuleName As String, ByVal ProcedureName As String) 'Variabelen dimmen VBCM As CodeModule, ProcStartLine As Long, ProcLineCount As Long Dim WB As Workbook On Error Resume Next 'Creating object of active workbook Set WB = ActiveWorkbook 'Creating object of active workbook Set WB = ActiveWorkbook 'Creating object of active workbook Set WB = ActiveWorkbook' object van werkboekmodule Stel VBCM = WB.VBProject.VBComponents(DeleteFromModuleName).CodeModule 'Controleren of de procedure in de codemodule bestaat If Not VBCM Is Nothing Dan ProcStartLine = 0 'Functie toekennen van het regelnr. van startregel voor de procedure ProcStartLine = VBCM.ProcStartLine(ProcedureName, vbext_pk_Proc) Als ProcStartLine > 0 Dan 'Functie wijs het nr. aantal regels in de procedure ProcLineCount = VBCM.ProcCountLines(ProcedureName, vbext_pk_Proc) 'Verwijder alle regels in de procedure VBCM.DeleteLines ProcStartLine, ProcLineCount End If Set VBCM = Nothing End If On Error GoTo 0 End Sub Sub CallingProcedure() 'Declaring variables Dim ModuleName, ProcedureName As String 'Waarde ophalen voor module en procedurenaam uit tekstvakken ModuleName = Sheet1.TextBox1.Value ProcedureName = Sheet1.TextBox2.Value 'DeleteProcedureCode-macro aanroepen DeleteProcedureCode ModuleName, ProcedureName End Sub 

Als je deze blog leuk vond, deel hem dan met je vrienden op Facebook. Ook kunt u ons volgen op Twitter en Facebook.

We horen graag van u, laat ons weten hoe we ons werk kunnen verbeteren en voor u kunnen verbeteren. Schrijf ons op de e-mailsite