Odstráňte postup z modulu pomocou jazyka VBA v programe Microsoft Excel

Anonim

V tomto článku vytvoríme makro na odstránenie iného makra z modulu.

Ako vzorové makro používame Module1, ktorý obsahuje SampleProcedure, ktorý chceme odstrániť.

Vysvetlenie kódu

Nastaviť VBCM = WB.VBProject.VBComponents (DeleteFromModuleName) .CodeModule

Vyššie uvedený kód sa používa na vytvorenie objektu definovaného modulu.

ProcStartLine = VBCM.ProcStartLine (ProcedureName, vbext_pk_Proc)

Vyššie uvedený kód sa používa na získanie čísla počiatočného riadka definovaného postupu.

ProcLineCount = VBCM.ProcCountLines (ProcedureName, vbext_pk_Proc)

Vyššie uvedený kód sa používa na získanie počtu riadkov v definovanom postupe.

VBCM.DeleteLines ProcStartLine, ProcLineCount

Vyššie uvedený kód sa používa na vymazanie všetkých riadkov v rámci definovaného postupu.

Pri kódovaní postupujte podľa nižšie uvedených pokynov

 Voľba Explicitný čiastkový DeleteProcedureCode (ByVal DeleteFromModuleName As String, ByVal ProcedureName As String) 'Deklarovanie premenných Dim VBCM ako CodeModule, ProcStartLine ako dlhý, ProcLineCount ako dlhý Dim WB ako zošit On Error Resume Next' Vytvorenie objektu aktívneho zošita Nastaviť WB = ActiveWork objekt modulu zošita Nastaviť VBCM = WB.VBProject.VBComponents (DeleteFromModuleName) .CodeModule 'Kontrola, či postup existuje v kodemodule Ak nie je VBCM nič, potom ProcStartLine = 0' Funkcia priraďujúca riadok č. štartovacej čiary pre postup ProcStartLine = VBCM.ProcStartLine (ProcedureName, vbext_pk_Proc) Ak ProcStartLine> 0 potom 'Funkcia priradiť č. riadkov v postupe ProcLineCount = VBCM.ProcCountLines (ProcedureName, vbext_pk_Proc) 'Vymažte všetky riadky v postupe VBCM.DeleteLines ProcStartLine, ProcLineCount Koniec Ak je nastavený VBCM = Nič sa nekončí Pri chybe GoTo 0 Koniec Sub Sub Sub CallingProcedure ()' Dim ModuleName, ProcedureName ako reťazec „Získavanie hodnoty pre názov modulu a procedúry z textových polí ModuleName = Sheet1.TextBox1.Value ProcedureName = Sheet1.TextBox2.Value“ Volanie makra DeleteProcedureCode DeleteProcedureCode ModuleName, ProcedName Koniec Sub Sub 

Ak sa vám tento blog páčil, zdieľajte ho so svojimi priateľmi na Facebooku. Môžete nás tiež sledovať na Twitteri a Facebooku.

Budeme radi, ak sa nám ozvete, dajte nám vedieť, ako môžeme zlepšiť našu prácu a zlepšiť ju pre vás. Napíšte nám na emailovú stránku