Eliminazione di una procedura da un modulo utilizzando VBA in Microsoft Excel
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.
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]