Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Code löschen per VBA

VBA Code löschen per VBA
10.01.2013 15:32:09
Peter
Hallo zusammen
Ich würde gerne alle Prozeduren in der Tabelle1 einer Datei mittels VBA löschen. Dafür verwende ich den folgenden Code:
Sub VBA_löschen()
With ActiveWorkbook.VBProject
With .VBComponents("Tabelle1").CodeModule
.DeleteLines 1, .CountOfLines
End With
End With
End Sub
Wenn ich diesen Code laufen lasse, dann erscheint mir immer die folgende Fehlermeldung:
Laufzeitfehler 9: Index ausserhalb des gültigen Bereichs
Habt Ihr ev. eine Idee, wie ich das Ganze zum laufen bekomme?
Danke für Eure Hilfe.
Liebe Grüsse
Peter

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Recherche bemühen-Makro mit Makro löschen-owT
10.01.2013 15:36:26
robert

AW: VBA Code löschen per VBA
10.01.2013 15:46:45
Hajo_Zi
Hallo Peter,
Hast du den Zugriff auf das VBA Projekt zugelassen?
Da dies tief in die Sicherheit geht, gebe ich dazu keine Anleitung.

AW: VBA Code löschen per VBA
10.01.2013 15:54:02
Peter
Hallo zusammen
Danke für Eure schnellen Antworten.
@Hajo
Wenn ich mittels einer anderen Prozedur einzelne Module in der gleichen Datei löschen will, dann funktioniert dies einwandfrei. Wenn ich aber einzelne Prozeduren innerhalb eines Arbeitsblattes löschen will, dann kommt die besagte Fehlermeldung. Ich bin mir nicht sicher, ob das wirklich mit dem Zugriff etwas zu tun hat, denn sonst würde ja auch meine Prozedur, welche ich für das Löschen der Module verwende, nicht funktionieren.
Od. sehe ich das falsch?
Besten Dank.
Lieber Gruss
Peter

Anzeige
AW: VBA Code löschen per VBA
10.01.2013 16:01:14
Peter
Den Zugriff habe ich überprüft. Dieser ist gewährleistet. Daran kann es also auch nicht liegen.

AW: VBA Code löschen per VBA
10.01.2013 16:32:48
Peter
Hallo zusammen
Ok, habe den Fehler gefunden. Mit diesem Code funktionierts:
Public Sub test()
With Workbooks("Test.xls").VBProject.VBComponents("Tabelle3").CodeModule
.DeleteLines 1, .CountOfLines
End With
End Sub
Danke für Eure Hilfe.
Lieber Gruss
Peter
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

VBA Code löschen in Excel: So geht's


Schritt-für-Schritt-Anleitung

Um Prozeduren in einem Excel-Arbeitsblatt über VBA zu löschen, kannst du den folgenden Code verwenden. Achte darauf, dass du die Datei und das Arbeitsblatt entsprechend anpasst.

  1. Öffne den VBA-Editor mit ALT + F11.
  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (deinWorkbookName)" > Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:
Sub VBA_löschen()
    With ActiveWorkbook.VBProject
        With .VBComponents("Tabelle1").CodeModule
            .DeleteLines 1, .CountOfLines
        End With
    End With
End Sub
  1. Stelle sicher, dass der Zugriff auf das VBA-Projekt in den Excel-Optionen aktiviert ist:
    • Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > VBA-Projektobjektmodell vertrauen.
  2. Führe das Makro aus, um den Code in Tabelle1 zu löschen.

Häufige Fehler und Lösungen

Ein häufiger Fehler, den du beim Löschen von VBA-Code in Excel haben könntest, ist der Laufzeitfehler 9: "Index außerhalb des gültigen Bereichs". Dies kann passieren, wenn du versuchst, auf ein nicht vorhandenes Modul oder eine falsche Tabelle zuzugreifen.

Lösung: Stelle sicher, dass der Name der Tabelle korrekt ist. Wenn du beispielsweise in "Tabelle3" arbeiten möchtest, ändere den Code entsprechend:

With ActiveWorkbook.VBProject.VBComponents("Tabelle3").CodeModule
    .DeleteLines 1, .CountOfLines
End With

Alternative Methoden

Falls du den Excel VBA Code nicht direkt löschen möchtest, kannst du auch:

  • Das gesamte Modul löschen: Verwende den folgenden Code:
Sub Modul_löschen()
    Dim vbComp As Object
    Set vbComp = ActiveWorkbook.VBProject.VBComponents("Tabelle1")
    ActiveWorkbook.VBProject.VBComponents.Remove vbComp
End Sub
  • Ein Makro erstellen, das mehrere Module löscht: Hier ein Beispiel:
Sub Mehrere_Modul_löschen()
    Dim i As Integer
    For i = 1 To ActiveWorkbook.VBProject.VBComponents.Count
        ActiveWorkbook.VBProject.VBComponents.Remove ActiveWorkbook.VBProject.VBComponents(i)
    Next i
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, um VBA-Code effizient zu löschen:

  1. Einzelne Prozeduren löschen:
Sub Einzelne_Prozeduren_löschen()
    With ActiveWorkbook.VBProject.VBComponents("Tabelle1").CodeModule
        .DeleteLines 1, 5 ' Löscht die ersten 5 Zeilen
    End With
End Sub
  1. Code in mehreren Tabellen löschen:
Sub Alle_Tabellen_löschen()
    Dim i As Integer
    For i = 1 To ActiveWorkbook.VBProject.VBComponents.Count
        If ActiveWorkbook.VBProject.VBComponents(i).Type = 1 Then ' 1 steht für vbComponentTypeModule
            ActiveWorkbook.VBProject.VBComponents(i).CodeModule.DeleteLines 1, ActiveWorkbook.VBProject.VBComponents(i).CodeModule.CountOfLines
        End If
    Next i
End Sub

Tipps für Profis

  • Regelmäßige Sicherung: Bevor du VBA-Code löschst, solltest du eine Sicherung deiner Datei erstellen.
  • Debugging: Verwende die Debug.Print Anweisung, um Fehlermeldungen zu identifizieren und die Ausführungsschritte nachzuvollziehen.
  • Dokumentation: Halte eine Dokumentation deiner VBA-Änderungen, um später nachvollziehen zu können, was geändert wurde.

FAQ: Häufige Fragen

1. Wie kann ich den Zugriff auf das VBA-Projekt aktivieren?
Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > VBA-Projektobjektmodell vertrauen aktivieren.

2. Was mache ich, wenn der Code nicht funktioniert?
Überprüfe, ob der Name der Tabelle oder des Moduls korrekt ist und ob die Datei tatsächlich geöffnet ist.

3. Kann ich den VBA Code auch in Excel Online löschen?
Leider ist der Zugriff auf VBA in Excel Online nicht verfügbar. Du musst die Desktop-Version verwenden.

4. Wie kann ich ein Makro löschen?
Um ein Makro zu löschen, gehe in den VBA-Editor, suche das entsprechende Modul oder die Prozedur und lösche den Code manuell oder entferne das gesamte Modul.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige