1.1k Aufrufe
Gefragt in Tabellenkalkulation von ahorn38 Experte (3.2k Punkte)
Hallo,

ich möchte in einem VBAProjekt alle Module bis auf das Modul "Beispiel" und alle UserFormen mit Ausnahme von UserForm "TEST" löschen.

Ich habe es versucht mit

[code]With ThisWorkbook.VBProject
   For Each Ding In ThisWorkbook.VBProject.VBComponents
    
    If Ding.name <> ("Beispiel") Or Ding.name <> "TEST" Then
       .VBComponents.Remove Ding
     End If
    next
end with
[/code]
Klappt aber nicht. Hat jemand eine Tipp?
Gruß A.

6 Antworten

0 Punkte
Beantwortet von
das hattest du doch schonmal gefragt und es war doch auch gelöst
[url]https://supportnet.de/t/2503219[/url]
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo,
ja,ich hatte ein ähnliches Problem bei dem die Lösung über die Type-Abfrage erfolgt ist:
[code] If Ding.Type <> 100 And Ding.Type <> 3 Then
       .VBComponents.Remove Ding
     End If[/code]

Allerdings werden bei dieser Methode alle Module gelöscht. Ich brauche aber ein bestimmtes "Beispiel" noch, was nicht gelöscht werden darf.
Gruß A.
0 Punkte
Beantwortet von
Hallo Andreas .-)

Statt Säuberungsaktionen(falls die Makros von Kollegen etc. kommen) ,würde ich lieber das Project schützen .-)

Gruß Nighty
0 Punkte
Beantwortet von
Hallo Andreas,

Wenn du deine Frage und Antwort 2 vergleichst, müsste dir der Fehler eigentlich ins Auge springen.
Mach einfach aus dem Or ein And. und ergänze zu Beginn des Makros noch die Zeile On Error Resume Next

Gruß Mr. K.
0 Punkte
Beantwortet von
Hallo Mr.K und all :-)

On Error Resume Next

Sollte nur in überschaubaren gekapselten Modulen eingesetzt werden!

Da Andreas noch relativ unbedarft in Vba ist,ist es gerade sinnvoll zu vermeiden!

Nun bekommt er keinen Fehler mehr mit,da die Fehlermeldungen unterdrückt werden!

Gruß Nighty
0 Punkte
Beantwortet von
@Nighty. Da geb ich dir recht. War davon ausgegangen dass in dem
Modul kein zusätzlicher Code enthalten ist. Dann eben so:

If Ding.name <> ("Beispiel") And Ding.name <> "TEST" _
And Ding.Type <> 100 Then

Gruß Mr. K.
...