Exclua um procedimento de um módulo usando VBA no Microsoft Excel

Anonim

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