In diesem Artikel erstellen wir ein Makro, um ein anderes Makro aus einem Modul zu löschen.

Wir verwenden Modul1, das SampleProcedure enthält, als Beispielmakro, das wir löschen möchten.

ArrowMain

ArrowRawData

Code Erklärung

Setzen Sie VBCM = WB.VBProject.VBComponents (DeleteFromModuleName) .CodeModule Mit dem obigen Code wird ein Objekt des definierten Moduls erstellt.

ProcStartLine = VBCM.ProcStartLine (ProcedureName, vbext_pk_Proc)

Der obige Code wird verwendet, um die Startzeilennummer der definierten Prozedur zu erhalten.

ProcLineCount = VBCM.ProcCountLines (ProcedureName, vbext_pk_Proc)

Der obige Code wird verwendet, um die Anzahl der Zeilen in der definierten Prozedur zu ermitteln.

VBCM.DeleteLines ProcStartLine, ProcLineCount Der obige Code wird verwendet, um alle Zeilen innerhalb der definierten Prozedur zu löschen.

Bitte folgen Sie unten für den Code

Option Explicit

Sub DeleteProcedureCode(ByVal DeleteFromModuleName As String, ByVal ProcedureName As String)

'Declaring variables

Dim 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 workbook module

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

'Checking whether the procedure exist in the codemodule

If Not VBCM Is Nothing Then



ProcStartLine = 0



'Function assigning the line no. of starting line for the procedure

ProcStartLine = VBCM.ProcStartLine(ProcedureName, vbext_pk_Proc)



If ProcStartLine > 0 Then



'Function assign the no. of lines in the procedure

ProcLineCount = VBCM.ProcCountLines(ProcedureName, vbext_pk_Proc)



'Delete all the lines in the 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

'Getting value for module and procedure name from textboxes

ModuleName = Sheet1.TextBox1.Value

ProcedureName = Sheet1.TextBox2.Value

'Calling DeleteProcedureCode macro

DeleteProcedureCode ModuleName, ProcedureName



End Sub

Wenn dir dieser Blog gefallen hat, teile ihn mit deinen Freunden auf Facebook und Facebook.

Wir würden gerne von Ihnen hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern und für Sie verbessern können. Schreiben Sie uns unter [email protected]