Ștergeți o procedură dintr-un modul folosind VBA în Microsoft Excel

Cuprins

În acest articol, vom crea o macro pentru a șterge o altă macro dintr-un modul.

Folosim Module1, care conține SampleProcedure ca eșantion macro, pe care dorim să îl ștergem.

Explicarea codului

Setați VBCM = WB.VBProject.VBComponents (DeleteFromModuleName) .CodeModule

Codul de mai sus este utilizat pentru a crea un obiect al modulului definit.

ProcStartLine = VBCM.ProcStartLine (ProcedureName, vbext_pk_Proc)

Codul de mai sus este utilizat pentru a obține numărul liniei de pornire a procedurii definite.

ProcLineCount = VBCM.ProcCountLines (ProcedureName, vbext_pk_Proc)

Codul de mai sus este utilizat pentru a obține numărul de linii în procedura definită.

VBCM.DeleteLines ProcStartLine, ProcLineCount

Codul de mai sus este utilizat pentru a șterge toate liniile din cadrul procedurii definite.

Vă rugăm să urmați codul de mai jos

 Opțiune Explicit Sub DeleteProcedureCode (ByVal DeleteFromModuleName As String, ByVal ProcedureName As String) 'Declararea variabilelor Dim VBCM Ca CodeModule, ProcStartLine As Long, ProcLineCount As Long Dim WB As Workbook On Error Reîncepeți' Creare obiect din registru de lucru activ Setare WB = ActiveWorkbook ' obiect al modulului de registru de lucru Set VBCM = WB.VBProject.VBComponents (DeleteFromModuleName) .CodeModule 'Verificarea dacă procedura există în codemodule Dacă nu VBCM nu este nimic, atunci ProcStartLine = 0' Funcție care atribuie linia nr. de linie de pornire pentru procedura ProcStartLine = VBCM.ProcStartLine (ProcedureName, vbext_pk_Proc) Dacă ProcStartLine> 0 Apoi 'Funcția atribuie nr. de linii în procedura ProcLineCount = VBCM.ProcCountLines (ProcedureName, vbext_pk_Proc) 'Ștergeți toate liniile din procedura 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 "Obținerea valorii pentru modulul și numele procedurii din casetele de text ModuleName = Sheet1.TextBox1.Value ProcedureName = Sheet1.TextBox2.Value" Apelare DeleteProcedureCode macro DeleteProcedureCode ModuleName, ProcedureName End Sub 

Dacă ți-a plăcut acest blog, distribuie-l prietenilor tăi de pe Facebook. De asemenea, ne puteți urmări pe Twitter și Facebook.

Ne-ar plăcea să aflăm de la dvs., să ne anunțați cum putem îmbunătăți munca noastră și o putem îmbunătăți. Scrieți-ne pe site-ul de e-mail

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave