In questo articolo, creeremo una macro per eliminare un’altra macro da un modulo.

Stiamo usando Module1, che contiene SampleProcedure come macro di esempio, che vogliamo eliminare.

ArrowMain

ArrowRawData

Spiegazione del codice

Set VBCM = WB.VBProject.VBComponents (DeleteFromModuleName) .CodeModule Il codice precedente viene utilizzato per creare un oggetto del modulo definito.

ProcStartLine = VBCM.ProcStartLine (ProcedureName, vbext_pk_Proc)

Il codice sopra viene utilizzato per ottenere il numero di riga iniziale della procedura definita.

ProcLineCount = VBCM.ProcCountLines (ProcedureName, vbext_pk_Proc)

Il codice precedente viene utilizzato per ottenere il conteggio del numero di righe nella procedura definita.

VBCM.DeleteLines ProcStartLine, ProcLineCount Il codice precedente viene utilizzato per eliminare tutte le righe all’interno della procedura definita.

Segui sotto per il codice

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

Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook e Facebook.

Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]