Microsoft Excel'de VBA kullanarak bir modülden bir prosedürü silme

Anonim

Bu yazımızda bir modülden başka bir makroyu silmek için bir makro oluşturacağız.

Silmek istediğimiz örnek makro olarak SampleProcedure içeren Module1 kullanıyoruz.

Kod açıklaması

VBCM = WB.VBProject.VBComponents(DeleteFromModuleName) olarak ayarlayın.CodeModule

Yukarıdaki kod, tanımlanan modülün bir nesnesini oluşturmak için kullanılır.

ProcStartLine = VBCM.ProcStartLine(ProcedureName, vbext_pk_Proc)

Yukarıdaki kod, tanımlanan prosedürün başlangıç ​​satır numarasını almak için kullanılır.

ProcLineCount = VBCM.ProcCountLines(ProcedureName, vbext_pk_Proc)

Yukarıdaki kod, tanımlanan prosedürdeki satır sayısını almak için kullanılır.

VBCM.DeleteLines ProcStartLine, ProcLineCount

Yukarıdaki kod, tanımlanan prosedür içindeki tüm satırları silmek için kullanılır.

Lütfen kod için aşağıdan takip edin

 Seçenek Explicit Sub DeleteProcedureCode(ByVal DeleteFromModuleName As String, ByVal ProcedureName As String) 'Değişkenleri bildirme Dim VBCM As CodeModule, ProcStartLine As Long, ProcLineCount Uzun Dim WB As Workbook On Error Resume Sonraki 'Creating WB nesnesi aktif çalışma kitabının oluşturulması' çalışma kitabı modülünün nesnesi Set VBCM = WB.VBProject.VBComponents(DeleteFromModuleName).CodeModule 'Yordamın kod modülünde olup olmadığını kontrol etme VBCM Hiçbir Şey Değilse ProcStartLine = 0 'İşlev no. ProcStartLine = VBCM.ProcStartLine(ProcedureName, vbext_pk_Proc) ProcStartLine > 0 ise, 'Function no. ProcLineCount = VBCM.ProcCountLines(ProcedureName, vbext_pk_Proc) 'VBCM.DeleteLines ProcStartLine, ProcLineCount End If Set Yordamındaki tüm satırları silin VBCM = Hata Onsa Hiçbir Şey Bitmez GoTo 0 End Sub Sub CallingProced' Dim ModuleName, ProcedureName As String 'Modül ve prosedür adı için metin kutularından değer alınıyor ModuleName = Sheet1.TextBox1.Value ProsedürName = Sheet1.TextBox2.Value 'DeleteProcedureCode makrosu çağırılıyor DeleteProcedureCode ModuleName, ProsedürName End Sub 

Bu blogu beğendiyseniz, Facebook'ta arkadaşlarınızla paylaşın. Ayrıca bizi Twitter ve Facebook'ta da takip edebilirsiniz.

Sizden haber almayı çok isteriz, işimizi nasıl geliştirebileceğimizi ve sizin için nasıl daha iyi hale getirebileceğimizi bize bildirin. E-posta sitesinde bize yazın