この記事では、モジュールから別のマクロを削除するためのマクロを作成します。

削除するサンプルマクロとして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]までご連絡ください