Macro que esborra una altra macro

Potser algun cop voldrem una macro que es pugui executar només un sol cop. O potser voldrem que sota unes determinades condicions s’elimini una macro. Doncs bé, aquest codi us pot ajudar.

Sub EliminaMacro(macro as string, mòdul as string)

Dim liDeb, NbLi

With ThisWorkbook.VBProject.VBComponents(mòdul).CodeModule
    liDeb = .ProcStartLine(macro, 0)
    NbLi = .ProcCountLines(macro, 0)
    .DeleteLines liDeb, NbLi
End With

End Sub
La crida de la macro es fa des d’una altra macro:
EliminaMacro "[nom_de_la_macro]" , "[nom_del_mòdul]"
Aquesta macro elimina només la macro especificada dins el mòdul especificat, deixa totes les altres línies de codi intactes. Com és una subrutina amb variables la macro queda oculta i no es pot executar des del menú Macro > Macros… (Alt+F8). També podem eliminar les variables i posar el nom del mòdul i de la macro manualment als llocs especificats, d’aquesta manera la macro es faria visible. Si volem quie la macro s’elimini ella mateixa només hem de especificar el seupropi nom.

Deixa un comentari

Publica un comentari