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

Forumthread: Mit VBA ein anderes Makro ändern

Mit VBA ein anderes Makro ändern
12.10.2008 14:24:49
Markus
Hallo zusammen,
besteht die Möglichkeit, dass man mittels Makros ein anderes Makro bzw. den Code für Worksheet_Activate ändern kann?
Problem 1

Sub Worksheet_Activate()
'ScrollArea = "C3: Bf32"
ScrollArea = ""
End Sub


Es soll danach wie folgt aussehen (Änderung in Zeile 1 und 2 des Makro):


Sub Worksheet_Activate()
ScrollArea = "C3: Bf32"
'ScrollArea = ""
End Sub


Problem2


Sub Makro1()
Columns("A:BE").Select
Range("A2").Activate
Selection.EntireColumn.Hidden = True
Range("BF3").Select
End Sub


Dieses Makro soll dahingehend geändert werden, dass in der ersten Spalte der Wertebereich in A:F geändert wird.
Kann mir da jemand helfen? Vielen Dank im Voraus!
Viele Grüße
Markus

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit VBA ein anderes Makro ändern
12.10.2008 15:56:22
Hajo_Zi
Hallo Markus,
hast Du Dir bei Deinem Level nicht ein wenig viel vorgenommen. Ja es it bestimmt möglich, aber es müssen auch Veränderuingen an den Optionen vorgenommen werden, was man nicht per VBA realisieren kann.

AW: Mit VBA ein anderes Makro ändern
12.10.2008 16:32:00
Tino
Hallo,
ich stimme Hajo allem zu.
Hier mal eine Möglichkeit (Beispiel), einen VBA- Code mit einem String zu erstellen.
Vielleicht kommst Du ja damit zurecht.
Zu beachten, dem zugriff auf VBA- Projekte muss vertraut werden.

Option Explicit
Sub versuch()
Dim meCode As String
With ActiveWorkbook.VBProject.VBComponents("Tabelle2").CodeModule
'sollten noch mehr Makros drin sein Zeile anpassen
'hier werden alle gelöscht
.DeleteLines 1, .CountOfLines
'neuer code String
meCode = _
"Sub Worksheet_Activate()" & Chr(10) & _
" 'ScrollArea = ""C3: Bf32""" & Chr(10) & _
" ScrollArea = """"" & Chr(10) & _
"End Sub"
.AddFromString meCode
End With
End Sub


Gruß Tino

www.VBA-Excel.de


Anzeige
AW: Mit VBA ein anderes Makro ändern
12.10.2008 19:35:00
Markus
Hallo zusammen,
konnte ja nicht ahnen, dass das für die Experten nicht einfach lösbar ist. Ich werde es dann auch mal lassen.
Danke trotzdem.
Schönen Abend
AW: Makros anders schreiben, nicht ändern
12.10.2008 20:22:16
Erich
Hallo Markus,
wenn es nur darum geht, per Makro einen anderen Bereich für die ScrollArea usw. geändert vorzugeben,
brauchst du nicht immer die Activate-Prozedur bzw. dein Makro1 zu ändern.
Du schreibst den Bereich nicht fest, sondern z. B. als Stringvariable in die Makros, etwa so: _ p>

Sub Worksheet_Activate()
ScrollArea = strScrAr
End Sub
Sub Makro1()
Range("BF3").Select
Columns(strColHid).Hidden = True ' dafür ist weder Activate noch Select nötig
End Sub

Dann musst du nur dafür sorgen, dass die beiden Stringvariablen vor dem Aufruf der Makros richtig gefüllt sind.
Vielleicht kannst du die Strings in einem Tabellenblatt ablegen und bei Bedarf dort lesen.
Oder du schreibst sie in die DokumentProperties, oder ...
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Makros anders schreiben, nicht ändern
13.10.2008 21:00:00
Markus
Hallo Erich,
vielen Dank für Deinen Lösungsvorschlag. Stehe aber derzeit auf dem Schlauch. Wie müsste ich denn das genau anpacken, wenn ich den Scrollarea-Bereich beim aktivieren der Tabelle 1 wie dargestellt abändern will:
'ScrollArea = "C3: Bf32"
ScrollArea = ""
nach
ScrollArea = ""
'ScrollArea = "C3: Bf32"
Sorry für die dumme Nachfrage.
Viele Grüße
Markus
Anzeige
AW: Makros anders geschrieben
14.10.2008 01:09:00
Erich
Hi Markus,
hier poste ich dir mal ein Beispiel dafür, dass die beiden Makros sich bei der Ausführung
Infos aus einem Tabellenblatt holen:

'----------------------- im Code der Tabelle1
Sub Worksheet_Activate()
ScrollArea = Cells(2, 7)
End Sub
'----------------------- in einem allg. Modul:
Option Explicit
Sub Makro1()
Range("BF3").Select
Columns(Sheets("Tabelle1").Cells(4, 7).Value).Hidden = True
End Sub
'Sub alt_Makro1()
'   Columns("A:BE").Select ' A:F
'   Range("A2").Activate
'   Selection.EntireColumn.Hidden = True
'   Range("BF3").Select
'End Sub

Jetzt fehlt natürlich noch das Makro, das die beiden Zellen G2 und G4 auf Tabelle1 mit Werten versorgt,
das also indirekt bestimmt, was Worksheet_Activate bzw. Makro1 tun - ohne VBA-Änderung.
Hier im Beispiel habe ich Scrollarea bzw. die Ausblend-Spalten mal abhängig vom Tag oder Wochentag gemacht.
Dieses "Obermakro" kommt auch in das allg. Modul:


Sub Ober_Makro()
With Sheets("Tabelle1")
If Weekday(Date, vbMonday) > 3 Then  ' ScrollArea festlegen
.Cells(2, 7) = "C3: Bf32"
Else
.Cells(2, 7) = ""
End If
If Day(Date) > 15 Then               ' Spalten zum Ausblenden festlegen
.Cells(4, 7) = "A:BE"
Else
.Cells(4, 7) = "A:F"
End If
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Mit VBA ein anderes Makro ändern


Schritt-für-Schritt-Anleitung

Um ein anderes Makro in Excel mittels VBA zu ändern, kannst du die folgenden Schritte befolgen:

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

  2. Finde das entsprechende Modul: Suche das Modul, das das Makro enthält, welches du ändern möchtest. In der Regel findest du die Module im Projektfenster auf der linken Seite.

  3. Erstelle ein neues Makro: Füge ein neues Makro hinzu, das den Code des zu ändernden Makros dynamisch anpasst. Hier ist ein Beispiel, um das Worksheet_Activate-Makro zu ändern:

    Sub versuch()
       Dim meCode As String
       With ActiveWorkbook.VBProject.VBComponents("Tabelle2").CodeModule
           .DeleteLines 1, .CountOfLines
           meCode = _
           "Sub Worksheet_Activate()" & Chr(10) & _
           "ScrollArea = ""C3: Bf32""" & Chr(10) & _
           "End Sub"
           .AddFromString meCode
       End With
    End Sub
  4. Führe das Makro aus: Starte das neue Makro, um die Änderungen wirksam zu machen.


Häufige Fehler und Lösungen

  • Fehler: Zugriff auf das VBA-Projekt ist nicht erlaubt: Du musst die Excel-Optionen anpassen, um den Zugriff auf das VBA-Projekt zu erlauben. Gehe zu Datei > Optionen > Vertrauen > Vertrauenseinstellungen > VBA-Projekt vertrauen.

  • Fehler: Das Makro wird nicht ausgeführt: Stelle sicher, dass du das richtige Modul ausgewählt hast und dass der Code korrekt eingefügt wurde.


Alternative Methoden

Eine alternative Methode, um ein Excel-Makro zu ändern, besteht darin, Parameter oder Variablen zu verwenden, die von einem Tabellenblatt abgerufen werden. Hier ein Beispiel:

Sub Worksheet_Activate()
    ScrollArea = Cells(2, 7)
End Sub

Sub Makro1()
    Columns(Sheets("Tabelle1").Cells(4, 7).Value).Hidden = True
End Sub

Mit dieser Methode kannst du die Werte, die zur Laufzeit verwendet werden, direkt in den Zellen der Tabelle speichern und ändern, ohne den VBA-Code anpassen zu müssen.


Praktische Beispiele

Hier sind einige nützliche Beispiele für die Anwendung von Excel Makro ändern:

  1. Dynamische ScrollArea:

    Sub SetScrollArea()
       Dim strScrollArea As String
       strScrollArea = "C3:Bf32"
       ScrollArea = strScrollArea
    End Sub
  2. Spalten ausblenden:

    Sub HideColumns()
       Columns("A:F").Hidden = True
    End Sub

In diesen Beispielen kannst du sehen, wie die Makros flexibel gestaltet werden können, um unterschiedliche Anforderungen zu erfüllen.


Tipps für Profis

  • Nutze Kommentare: Halte deinen Code übersichtlich, indem du Kommentare hinzufügst. Das erleichtert das Verständnis für dich und andere Benutzer.

  • Verwende Option Explicit: Dies zwingt dich dazu, alle Variablen zu deklarieren, was Fehler reduziert und die Lesbarkeit erhöht.

  • Backup erstellen: Bevor du Änderungen am Code vornimmst, erstelle immer eine Sicherungskopie deines VBA-Projekts.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein Makro richtig funktioniert?
Teste dein Makro in einer Kopie deiner Datei, bevor du es in der Originaldatei ausführst.

2. Was, wenn ich nicht weiß, wo sich mein Makro befindet?
Durchsuche die Module im VBA-Editor und schaue nach, in welchem Modul dein Makro gespeichert ist. Du kannst auch die Suchfunktion (CTRL + F) nutzen.

3. Kann ich mehrere Makros auf einmal ändern?
Ja, du kannst eine Schleife im VBA verwenden, um mehrere Makros nacheinander zu ändern, wenn sie sich im gleichen Modul befinden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige