이 기사에서는 모듈에서 다른 매크로를 삭제하는 매크로를 만듭니다.

삭제할 샘플 매크로로 SampleProcedure를 포함하는 Module1을 사용하고 있습니다.

ArrowMain

ArrowRawData

코드 설명

Set VBCM = WB.VBProject.VBComponents (DeleteFromModuleName) .CodeModule 위 코드는 정의 된 모듈의 객체를 생성하는 데 사용됩니다.

ProcStartLine = VBCM.ProcStartLine (ProcedureName, vbext_pk_Proc)

위의 코드는 정의 된 프로 시저의 시작 줄 번호를 가져 오는 데 사용됩니다.

ProcLineCount = VBCM.ProcCountLines (ProcedureName, vbext_pk_Proc)

위의 코드는 정의 된 프로 시저의 줄 수를 가져 오는 데 사용됩니다.

VBCM.DeleteLines ProcStartLine, ProcLineCount 위의 코드는 정의 된 프로 시저 내의 모든 줄을 삭제하는 데 사용됩니다.

아래 코드를 따르세요

Option Explicit

Sub DeleteProcedureCode(ByVal DeleteFromModuleName As String, ByVal ProcedureName As String)

'Declaring variables

Dim VBCM As CodeModule, ProcStartLine As Long, ProcLineCount As Long

Dim WB As Workbook

On Error Resume Next

'Creating object of active workbook

Set WB = ActiveWorkbook

'Creating object of workbook module

Set VBCM = WB.VBProject.VBComponents(DeleteFromModuleName).CodeModule

'Checking whether the procedure exist in the codemodule

If Not VBCM Is Nothing Then



ProcStartLine = 0



'Function assigning the line no. of starting line for the procedure

ProcStartLine = VBCM.ProcStartLine(ProcedureName, vbext_pk_Proc)



If ProcStartLine > 0 Then



'Function assign the no. of lines in the procedure

ProcLineCount = VBCM.ProcCountLines(ProcedureName, vbext_pk_Proc)



'Delete all the lines in the procedure

VBCM.DeleteLines ProcStartLine, ProcLineCount



End If

Set VBCM = Nothing

End If

On Error GoTo 0

End Sub

Sub CallingProcedure()

'Declaring variables

Dim ModuleName, ProcedureName As String

'Getting value for module and procedure name from textboxes

ModuleName = Sheet1.TextBox1.Value

ProcedureName = Sheet1.TextBox2.Value

'Calling DeleteProcedureCode macro

DeleteProcedureCode ModuleName, ProcedureName



End Sub

이 블로그가 마음에 들면 Facebook 및 Facebook에서 친구들과 공유하십시오.

여러분의 의견을 듣고 싶습니다. 작업을 개선하고 더 나은 서비스를 제공 할 수있는 방법을 알려주십시오. [email protected]로 문의 해주세요