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

VBA code durch VBA ändern

Forumthread: VBA code durch VBA ändern

VBA code durch VBA ändern
20.01.2004 07:30:13
Chris b
VBA Code durch VBA ändern.
Hallo Excel Profis,
habe eine frage und zwar weiß ich das ich mit VBA den VB Code ändern kann dazu habe ich diesen unten stehenden Code:
Probelm ist aber dieser Code ändert nur das VBA Projekt in dem er auch steht wegen dem Activecodepane glaube ich.
Ist es Möglich wenn z.B der code der geändert werden soll im Modul1 steht und der VBA code der das ändern aufruft im Modul2 das da auch geht?
Für eure Hilfe wäre ich euch sehr dankbar Christian
'Code soll im Modul1 sein (Momentan sind beide Codes im Modul1)
Const SuchZeile = " MsgBox ""VBA macht Spaß !"""
Const NeueZeile = " MsgBox ""VBA macht großen Spaß !"""

Sub VBAZeileÄndern()
Set VBE = Application.VBE.ActiveCodePane.CodeModule
With VBE
For x = 1 To .countoflines
i = .countoflines
If .Lines(x, 1) = NeueZeile Then
.ReplaceLine x, SuchZeile
Exit Sub
End If
If .Lines(x, 1) = SuchZeile Then
.ReplaceLine x, NeueZeile
Exit Sub
End If
Next x
End With
End Sub

'Code Soll im Modul 2 geändert werden (Momentan sind beide Codes im Modul1)

Sub Testen()
MsgBox "VBA macht Spaß !"
End Sub

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA code durch VBA ändern
20.01.2004 08:19:48
Detlev
Hallo Chris,
ich hab Deinen Code etwas geändert, danach lief es bei mir.
Modul 1
Const SuchZeile = "MsgBox ""VBA macht Spaß !"""
Const NeueZeile = "MsgBox ""VBA macht großen Spaß !"""

Sub VBAZeileÄndern()
Set VBE = Application.VBE.VBProjects(2).VBComponents.Item(4).CodeModule
With VBE
For x = 1 To .countoflines
i = .countoflines
If Trim(.Lines(x, 1)) = NeueZeile Then
.ReplaceLine x, SuchZeile
Exit Sub
End If
If Trim(.Lines(x, 1)) = SuchZeile Then
.ReplaceLine x, NeueZeile
Exit Sub
End If
Next x
End With
End Sub

Modul 2

Sub Testen()
MsgBox "VBA macht Spaß !"
End Sub

Gruss aus Hannover
Detlev
www.Bieler.org
Anzeige
leider nicht das was ich wollte
20.01.2004 08:32:49
chris b
Is leider nicht das was ich wollte.
dacht mir ich kann irgendwo angeben modul2 oder so.Also hier meine ich
Set VBE = Application.VBE.ActiveCodePane.CodeModule
Set VBE = Application.VBE.Modul2.CodeModule
AW: Hinbekommen
20.01.2004 09:18:41
chris b
Habs jetzt doch noch hinbekommen.
folgende CodeZeile geändert !
Set VBE = Application.VBE.VBProjects(2).VBComponents.Item(4).CodeModule
in ->
Set VBE = Application.VBE.VBProjects(1).VBComponents.Item("Modul2").CodeModule
Anzeige
AW: Hinbekommen
20.01.2004 10:32:24
Detlev
Gratz,
auf die Anführungszeichen hätte ich auch kommen können!
Gruss
Detlev
www.Bieler.org
;

Forumthreads zu verwandten Themen

Anzeige

Infobox / Tutorial

VBA Code durch VBA ändern


Schritt-für-Schritt-Anleitung

Um einen VBA Code in einem anderen Modul zu ändern, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Erstelle zwei Module: Füge zwei Module hinzu, z. B. Modul1 und Modul2.

  3. Füge den ursprünglichen Code in Modul1 ein:

    Const SuchZeile = "MsgBox ""VBA macht Spaß !"""
    Const NeueZeile = "MsgBox ""VBA macht großen Spaß !"""
    
    Sub VBAZeileÄndern()
       Set VBE = Application.VBE.VBProjects(1).VBComponents.Item("Modul2").CodeModule
       With VBE
           For x = 1 To .CountOfLines
               If Trim(.Lines(x, 1)) = NeueZeile Then
                   .ReplaceLine x, SuchZeile
                   Exit Sub
               End If
               If Trim(.Lines(x, 1)) = SuchZeile Then
                   .ReplaceLine x, NeueZeile
                   Exit Sub
               End If
           Next x
       End With
    End Sub
  4. Füge den Test-Code in Modul2 ein:

    Sub Testen()
       MsgBox "VBA macht Spaß !"
    End Sub
  5. Führe das VBAZeileÄndern-Makro aus: Gehe zurück zu Excel und führe das Makro aus, um den Text in Modul2 zu ändern.


Häufige Fehler und Lösungen

  • Problem: "Der Code ändert nur das aktuelle Modul."

    • Lösung: Stelle sicher, dass du den richtigen Verweis auf das Zielmodul in deinem Set VBE-Befehl verwendest, wie in der Schritt-für-Schritt-Anleitung gezeigt.
  • Problem: Fehler beim Zugriff auf VBComponents.

    • Lösung: Überprüfe, ob das VBA-Projekt nicht mit einem Passwort geschützt ist. Wenn ja, musst du das Passwort eingeben, um Änderungen vorzunehmen.

Alternative Methoden

Eine andere Möglichkeit, VBA-Codes zu ändern, besteht darin, die Application.VBE-Objekte direkt zu verwenden. Du kannst auch den VBA-Editor manuell verwenden, um Änderungen vorzunehmen, falls du keine Programmierung durchführen möchtest.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie du einen Text in einem VBA-Module ändern kannst:

  1. Modul1:

    Const SuchZeile = "MsgBox ""Hallo Welt!"""
    Const NeueZeile = "MsgBox ""Willkommen in der VBA-Welt!"""
  2. Modul2:

    Sub Beispiel()
       MsgBox "Hallo Welt!"
    End Sub

Wenn du das VBAZeileÄndern-Makro ausführst, wird der Text in Modul2 von "Hallo Welt!" zu "Willkommen in der VBA-Welt!" geändert.


Tipps für Profis

  • Verwendung von Trim: Achte darauf, die Trim-Funktion zu verwenden, um führende und nachfolgende Leerzeichen zu entfernen. Dies kann helfen, Fehler zu vermeiden, wenn der Code nicht exakt übereinstimmt.
  • Verwendung von Konstanten: Definiere häufig verwendete Strings als Konstanten, um die Wartbarkeit deines Codes zu verbessern.
  • Sichern des Codes: Bevor du Änderungen vornimmst, erstelle eine Sicherungskopie deines VBA-Codes, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Kann ich den VBA-Code in einer geschützten Arbeitsmappe ändern?
Nein, du musst das Passwort für die geschützte Arbeitsmappe kennen, um den Code zu ändern.

2. Wie kann ich sicherstellen, dass ich das richtige Modul bearbeite?
Verwende den Namen des Moduls, wie in der Anleitung beschrieben, um sicherzustellen, dass du das richtige Codemodule bearbeitest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige