In diesem Artikel erstellen wir ein Makro, um ein anderes Makro aus einem Modul zu löschen.
Wir verwenden Module1, das SampleProcedure als Beispielmakro enthält, das wir löschen möchten.
Codeerklärung
Setze VBCM = WB.VBProject.VBComponents(DeleteFromModuleName).CodeModule
Der obige Code wird verwendet, um ein Objekt des definierten Moduls zu erstellen.
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) 'Variablen deklarieren Dim VBCM As CodeModule, ProcStartLine As Long, ProcLineCount As Long Dim WB As Workbook On Error Resume Next 'Objekt der aktiven Arbeitsmappe erstellen Set WB = ActiveWorkbook 'Creating Objekt des Arbeitsmappenmoduls Set VBCM = WB.VBProject.VBComponents(DeleteFromModuleName).CodeModule 'Prüfen, ob die Prozedur im Codemodul existiert If Not VBCM Is Nothing Then ProcStartLine = 0 'Funktion, die die Zeilen-Nr. der Startzeile für die Prozedur ProcStartLine = VBCM.ProcStartLine(ProcedureName, vbext_pk_Proc) Wenn ProcStartLine > 0 Then 'Funktion die Nr. zuweisen. der Zeilen in der Prozedur ProcLineCount = VBCM.ProcCountLines(ProcedureName, vbext_pk_Proc) 'Alle Zeilen in der Prozedur löschen VBCM.DeleteLines ProcStartLine, ProcLineCount End If Set VBCM = Nothing End If On Error GoTo 0 End Sub Sub CallingProcedure() 'Variablen deklarieren Dim ModuleName, ProcedureName As String 'Wert für Modul- und Prozedurnamen aus Textfeldern abrufen ModuleName = Sheet1.TextBox1.Value ProcedureName = Sheet1.TextBox2.Value 'Aufruf des DeleteProcedureCode-Makros DeleteProcedureCode ModuleName, ProcedureName End Sub
Wenn Ihnen dieser Blog gefallen hat, teilen Sie ihn mit Ihren Freunden auf Facebook. Außerdem können Sie uns auf Twitter und Facebook folgen.
Wir würden uns freuen, von Ihnen zu hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern und für Sie verbessern können. Schreiben Sie uns auf der E-Mail-Site