Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro ausführen, wenn Zellinhalt geändert wird

Makro ausführen, wenn Zellinhalt geändert wird
Dogbert
Hallo!
Ich habe in einer Zelle eine Datengültigkeit angegeben. Als gültig angegeben habe ich eine Liste von Werten, die in Zellen stehen. (Möglich sind die Werte "ja" oder "nein".)
Nun suche ich eine Möglichkeit, ein Makro auszuführen, sobald der Zellinhalt verändert wird. Wenn also "ja" ausgewählt wird, soll ein bestimmtes Makro ausgeführt werden und wenn "nein" ausgewählt wird, ein anderes.
Kann mir da jemand helfen?
Vielen Dank!
Dogbert
Anzeige
AW: Makro ausführen, wenn Zellinhalt geändert wird
06.08.2010 10:12:51
Rudi
Hallo,
Gültigkeit ist in B2.
in den Code der Tabelle:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B2")) Is Nothing Then
Else
Select Case Target
Case "ja": Makro1
Case "nein": Makro2
End Select
End If
End Sub
Sub Makro1()
MsgBox "ja"
End Sub Sub Makro2()
MsgBox "nein"
End Sub
Gruß
Rudi
Anzeige
AW: Makro ausführen, wenn Zellinhalt geändert wird
06.08.2010 10:38:55
Dogbert
Danke für die Rückmeldung!
So müsste das wohl gehen. Aber dieses Worksheet_Change - Makro wird bei mir gar nicht automatisch ausgeführt. Ich habe probehalber Dein Makro in eine neue Arbeitsmappe kopiert und direkt unter der ersten Zeile (Private Sub ...) eingefügt: 'MsgBox("Test")'. Damit sollte doch bei jeder Zelländerung eine MsgBox kommen? Es tut sich aber gar nichts.
Woran kann das noch liegen?
Danke!
Dogbert
Anzeige
AW: Makro ausführen, wenn Zellinhalt geändert wird
06.08.2010 10:46:05
Rudi
Hallo,
das muss im Klassenmodul einer Tabelle liegen.
Im VBA-Editor doppelklick auf eine Tabelle und da rein kopieren.
Oder Rechtsklick auf eine Registerzunge-Code anzeigen.
Gruß
Rudi
AW: Makro ausführen, wenn Zellinhalt geändert wird
06.08.2010 13:19:42
Dogbert
Ok!
Ich hatte den Code in ein eigenes Modul gelegt.
Jetzt liegt er in der Tabelle und es geht.
Vielen Dank!
Anzeige
AW: Makro ausführen, wenn Zellinhalt geändert wird
06.08.2010 10:46:58
JogyB
Hallo Dogbert,
hast Du beachtet, dass durch das Intersect nur Änderungen von Zelle B2 beachtet werden?
Falls ja, wie ist bei Dir die Makrosicherheit eingestellt?
Gruß, Jogy
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Makro automatisch ausführen bei Zelländerung in Excel


Schritt-für-Schritt-Anleitung

Um ein Excel-Makro auszuführen, wenn eine Zelle geändert wird, kannst Du die folgende Anleitung befolgen:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Wähle das richtige Arbeitsblatt:

    • Suche im Projekt-Explorer auf der linken Seite das Arbeitsblatt, in dem Du das Makro ausführen möchtest. Doppelklicke darauf.
  3. Füge den Code ein:

    • Kopiere den folgenden VBA-Code und füge ihn in das Code-Fenster des gewählten Arbeitsblatts ein:
    Private Sub Worksheet_Change(ByVal Target As Range)
       If Intersect(Target, Range("B2")) Is Nothing Then
           Exit Sub
       Else
           Select Case Target.Value
               Case "ja"
                   Call Makro1
               Case "nein"
                   Call Makro2
           End Select
       End If
    End Sub
    
    Sub Makro1()
       MsgBox "ja"
    End Sub
    
    Sub Makro2()
       MsgBox "nein"
    End Sub
  4. Speichere Deine Arbeit:

    • Stelle sicher, dass Du die Datei im Excel-Makro-aktivierten Format speicherst (*.xlsm).
  5. Teste das Makro:

    • Ändere den Inhalt von Zelle B2 in "ja" oder "nein", um die jeweiligen Makros auszuführen.

Häufige Fehler und Lösungen

  • Makro wird nicht ausgeführt:

    • Stelle sicher, dass der Code im Klassenmodul des Arbeitsblatts liegt und nicht in einem allgemeinen Modul. Doppelklicke auf das Arbeitsblatt im VBA-Editor, um das richtige Fenster zu öffnen.
  • Makrosicherheitseinstellungen:

    • Überprüfe, ob die Makrosicherheit in Excel so eingestellt ist, dass Makros ausgeführt werden dürfen. Du findest diese Option unter Datei > Optionen > Trust Center > Einstellungen für das Trust Center.

Alternative Methoden

Eine andere Möglichkeit, ein Makro automatisch auszuführen, besteht darin, die Worksheet_SelectionChange-Methode zu nutzen, um auf Auswahländerungen zu reagieren:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("B2")) Is Nothing Then
        MsgBox "Zelle B2 wurde ausgewählt."
    End If
End Sub

Diese Methode ist nützlich, wenn Du eine Aktion ausführen möchtest, sobald eine andere Zelle ausgewählt wird.


Praktische Beispiele

  1. Zellinhalt überwachen:

    • Du kannst den Code so anpassen, dass er auf mehrere Zellen reagiert, indem Du die Intersect-Funktion für mehrere Bereiche verwendest.
  2. Dynamische Aktionen:

    • Statt einer MsgBox könntest Du auch Daten aus einer anderen Quelle laden oder Berechnungen ausführen.

Tipps für Profis

  • Verwende Fehlerbehandlung im VBA-Code, um unerwartete Fehler zu vermeiden:
On Error GoTo ErrorHandler
' Dein Code hier
Exit Sub
ErrorHandler:
   MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
  • Optimiere Deinen Code, um die Ausführungsgeschwindigkeit zu erhöhen, indem Du unnötige Berechnungen vermeidest.

FAQ: Häufige Fragen

1. Warum wird das Makro nicht ausgeführt, wenn ich einen Wert in B2 ändere? Es ist wichtig, dass das Makro im richtigen Worksheet-Modul gespeichert ist. Überprüfe auch die Makrosicherheitseinstellungen.

2. Kann ich mehrere Zellen überwachen? Ja, Du kannst die Intersect-Funktion erweitern, um mehrere Zellen zu überwachen, indem Du einen Bereich angibst, z.B. If Not Intersect(Target, Range("B2:B10")) Is Nothing Then.

3. Wie kann ich das Makro testen? Ändere den Inhalt der überwachten Zelle (z.B. B2) in "ja" oder "nein", und das jeweilige Makro sollte ausgeführt werden.

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