Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

prozedur löschen

Betrifft: prozedur löschen von: Rolf H.
Geschrieben am: 08.11.2012 13:05:40

Hallo zusammen,
wie lässt sich mittels VBA eine Prozedur löschen und ersetzen, ohne dass gleich das gesamte Modul gelöscht wird.
Also:

Sub hans
[A1]="Torwart"
End Sub

löschen und ersetzen durch
Sub hans
[A1]="Stürmer"
End Sub

Gruß
Rolf H.

  

Betrifft: AW: prozedur löschen von: Rudi Maintaire
Geschrieben am: 08.11.2012 14:02:21

Hallo,

Sub aaa()
  Dim vbc
  Dim iStart, iAnzahl
  
  Const sProc As String = "hans"
  
  For Each vbc In ThisWorkbook.VBProject.VBComponents
    If vbc.Type = 1 Then
    On Error Resume Next
    
    With vbc.codemodule
      iStart = .ProcStartLine(sProc, vbext_pk_Proc)
      iAnzahl = .ProcCountLines(sProc, vbext_pk_Proc)
      If Err.Number = 0 Then
        .DeleteLines iStart, iAnzahl
        .InsertLines iStart, ""
        .InsertLines iStart + 1, "Sub hans()"
        .InsertLines iStart + 2, "  [A1]=""Stürmer"""
        .InsertLines iStart + 3, "End Sub"
        .InsertLines iStart + 4, ""
      End If
    End With
    
    On Error GoTo 0
    End If
  Next
  
End Sub

Gruß
Rudi


  

Betrifft: AW: prozedur löschen von: Rolf H.
Geschrieben am: 08.11.2012 14:55:00

Hallo Rudi,
recht herzlichen Dank für deine schnelle und kompetente Antwort.
Noch eine Frage.
Wenn ich einem Modul eine neue Prozedur hinzufügen will, muss ich dann auch jede Zeile mit "InsertLines"
einzeln eingeben?
Gruß
Rolf


  

Betrifft: AW: prozedur löschen von: Rudi Maintaire
Geschrieben am: 08.11.2012 15:42:41

hallo,
das kannst du auch per AddFromString

Sub yyy()
   Dim vbc As Object
   Dim sCode As String
   Application.ScreenUpdating = False
   
   sCode = "Sub Meldung()" & vbLf
   sCode = sCode & "   MsgBox ""Hallo Welt!""" & vbLf
   sCode = sCode & "End Sub"
   
   Set vbc = ActiveWorkbook.VBProject.VBComponents("Modul1")
   'oder neues Modul:
   'Set vbc = ActiveWorkbook.VBProject.VBComponents.Add(1)
   vbc.codemodule.addfromstring sCode
End Sub

sCode kannst du natürlich auch anders zusammenbasteln.

Gruß
Rudi


  

Betrifft: AW: prozedur löschen von: Rolf H.
Geschrieben am: 08.11.2012 16:40:37

Hallo Rudi,
jetzt habe ich genug Material, um - wie du sagst - zu basteln.
Nochmals vielen Dank
Gruß
Rolf


 

Beiträge aus den Excel-Beispielen zum Thema "prozedur löschen"