Dans cet article, nous allons créer une macro pour supprimer une autre macro d’un module.

Nous utilisons Module1, qui contient SampleProcedure comme exemple de macro, que nous voulons supprimer.

ArrowMain

ArrowRawData

Explication du code

Set VBCM = WB.VBProject.VBComponents (DeleteFromModuleName) .CodeModule Le code ci-dessus est utilisé pour créer un objet du module défini.

ProcStartLine = VBCM.ProcStartLine (Nom de la procédure, vbext_pk_Proc)

Le code ci-dessus est utilisé pour obtenir le numéro de ligne de départ de la procédure définie.

ProcLineCount = VBCM.ProcCountLines (ProcedureName, vbext_pk_Proc)

Le code ci-dessus est utilisé pour obtenir le nombre de lignes dans la procédure définie.

VBCM.DeleteLines ProcStartLine, ProcLineCount Le code ci-dessus est utilisé pour supprimer toutes les lignes de la procédure définie.

Veuillez suivre ci-dessous pour le 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

Si vous avez aimé ce blog, partagez-le avec vos amis sur Facebook et Facebook.

Nous serions ravis de vous entendre, faites-nous savoir comment nous pouvons améliorer notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]