Neste artigo, criaremos uma macro para excluir outra macro de um módulo.
Estamos usando o Módulo1, que contém SampleProcedure como a macro de amostra, que desejamos excluir.
Explicação do código
Defina VBCM = WB.VBProject.VBComponents (DeleteFromModuleName) .CodeModule
O código acima é usado para criar um objeto do módulo definido.
ProcStartLine = VBCM.ProcStartLine (ProcedureName, vbext_pk_Proc)
O código acima é usado para obter o número da linha inicial do procedimento definido.
ProcLineCount = VBCM.ProcCountLines (ProcedureName, vbext_pk_Proc)
O código acima é usado para obter a contagem do número de linhas no procedimento definido.
VBCM.DeleteLines ProcStartLine, ProcLineCount
O código acima é usado para deletar todas as linhas dentro do procedimento definido.
Siga abaixo para o código
Option Explicit Sub DeleteProcedureCode (ByVal DeleteFromModuleName As String, ByVal ProcedureName As String) 'Declarando variáveis Dim VBCM As CodeModule, ProcStartLine As Long, ProcLineCount As Long Dim WB As pasta de trabalho On Error Resume Next' Criando objeto da pasta de trabalho ativa Definir WB = ActiveWorkbook 'Criando objeto do módulo de pasta de trabalho Set VBCM = WB.VBProject.VBComponents (DeleteFromModuleName) .CodeModule 'Verificando se o procedimento existe no codemódulo If Not VBCM Is Nothing Then ProcStartLine = 0' Função atribuindo a linha no. de linha de partida para o procedimento ProcStartLine = VBCM.ProcStartLine (ProcedureName, vbext_pk_Proc) If ProcStartLine> 0 Then 'Função atribuir o no. de linhas no procedimento ProcLineCount = VBCM.ProcCountLines (ProcedureName, vbext_pk_Proc) 'Exclua todas as linhas no procedimento VBCM.DeleteLines ProcStartLine, ProcLineCount End If Set VBCM = Nothing End If On Erro GoTo 0 End Sub Sub CallingProcedure ()' Declarando variáveis Dim ModuleName, ProcedureName As String 'Obtendo valor para o módulo e o nome do procedimento das caixas de texto ModuleName = Sheet1.TextBox1.Value ProcedureName = Sheet1.TextBox2.Value' Chamando a macro DeleteProcedureCode DeleteProcedureCode ModuleName, ProcedureName End Sub
Se você gostou deste blog, compartilhe com seus amigos no Facebook. Além disso, você pode nos seguir no Twitter e no Facebook.
Gostaríamos muito de ouvir de você, diga-nos como podemos melhorar nosso trabalho e torná-lo melhor para você. Escreva para nós no site de e-mail