Eliminare una procedura da un modulo utilizzando VBA in Microsoft Excel

Anonim

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

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

Spiegazione del codice

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

Il codice sopra 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 sopra viene utilizzato per ottenere il conteggio del numero di righe nella procedura definita.

VBCM.DeleteLines ProcStartLine, ProcLineCount

Il codice sopra viene utilizzato per eliminare tutte le righe all'interno della procedura definita.

Si prega di seguire sotto per il codice

 Option Explicit Sub DeleteProcedureCode(ByVal DeleteFromModuleName As String, ByVal ProcedureName As String) 'Dichiarazione delle variabili Dim VBCM As CodeModule, ProcStartLine As Long, ProcLineCount As Long Dim WB As Workbook On Error Resume Next 'Creazione oggetto della cartella di lavoro attiva Set WB = ActiveWorkbook 'Creating oggetto del modulo cartella di lavoro Set VBCM = WB.VBProject.VBComponents(DeleteFromModuleName).CodeModule 'Verifica se la procedura esiste nel codemodule If Not VBCM Is Nothing Then ProcStartLine = 0 'Funzione che assegna la riga n. della riga di partenza per la procedura ProcStartLine = VBCM.ProcStartLine(ProcedureName, vbext_pk_Proc) Se ProcStartLine > 0 Allora 'Function assegna il n. di righe nella procedura ProcLineCount = VBCM.ProcCountLines(ProcedureName, vbext_pk_Proc) 'Cancella tutte le righe nella procedura VBCM.DeleteLines ProcStartLine, ProcLineCount End If Set VBCM = Nothing End If On Error GoTo 0 End Sub Sub CallingProcedure() 'Dichiarazione variabili Dim ModuleName, ProcedureName As String 'Ottenimento del valore per il modulo e il nome della procedura dalle caselle di testo ModuleName = Sheet1.TextBox1.Value ProcedureName = Sheet1.TextBox2.Value 'Chiamata della macro DeleteProcedureCode DeleteProcedureCode ModuleName, ProcedureName End Sub 

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

Ci piacerebbe avere tue notizie, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici al sito di posta elettronica