Trong bài viết này, chúng tôi sẽ tạo một macro để xóa một macro khác khỏi một mô-đun.

Chúng tôi đang sử dụng Module1, chứa SampleProcedure làm macro mẫu mà chúng tôi muốn xóa.

ArrowMain

ArrowRawData

Giải thích mã

Đặt VBCM = WB.VBProject.VBComponents (DeleteFromModuleName) .CodeModule Đoạn mã trên được sử dụng để tạo một đối tượng của mô-đun đã xác định.

ProcStartLine = VBCM.ProcStartLine (Tên thủ tục, vbext_pk_Proc)

Đoạn mã trên được sử dụng để lấy số dòng bắt đầu của thủ tục đã xác định.

ProcLineCount = VBCM.ProcCountLines (Tên thủ tục, vbext_pk_Proc)

Đoạn mã trên được sử dụng để đếm số dòng trong thủ tục đã xác định.

VBCM.DeleteLines ProcStartLine, ProcLineCount Đoạn mã trên được sử dụng để xóa tất cả các dòng trong quy trình đã xác định.

Vui lòng theo dõi bên dưới để biết mã

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

Nếu bạn thích blog này, hãy chia sẻ nó với bạn bè của bạn trên Facebook và Facebook.

Chúng tôi rất muốn nghe ý kiến ​​từ bạn, hãy cho chúng tôi biết cách chúng tôi có thể cải thiện công việc của mình và làm cho nó tốt hơn cho bạn. Viết thư cho chúng tôi [email protected]