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.

Publica un comentari a l'entrada