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

Bei Änderung eines Zellenwertes Makro ausführen

Forumthread: Bei Änderung eines Zellenwertes Makro ausführen

Bei Änderung eines Zellenwertes Makro ausführen
18.07.2008 12:05:00
John
Hallo Zusammen,
ich möchte gerne ein Makro ausführen, wenn man in eine Zelle etwas eingetragen hat.
Konkret soll also nach "Return" ein Makro den neuen Wert der Zelle in eine mysql-DB schreiben. Das Schreiben klappt so ohne Probleme - mir fehlt nur noch der "Trigger-Event".
Ich konnte da jetzt nirgends etwas finden - hat jemand einen Tipp?
Tausend Dank schonmal vorab.

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Bei Änderung eines Zellenwertes Makro ausführe
18.07.2008 12:14:00
Beverly
Hi John,
dazu kannst du das Workseet_Change Ereignis verwenden

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then dein_makro
End Sub




Anzeige
AW: Bei Änderung eines Zellenwertes Makro ausführen
18.07.2008 12:16:00
UweD
Hallo
der Code muß in...
- rechte Maustaste auf den Tabellblattname unten
- Code anzeigen..
- reincopieren
- den Bereich noch abändern, wann das Makro aktiv werden soll (hier nur A1 und B1)

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B1")) Is Nothing Then
'dein Makro
End If
End Sub


Gruß UweD

Anzeige
AW: Bei Änderung eines Zellenwertes Makro ausführen
18.07.2008 12:37:12
John
Erstmal vielen Dank - das bringt mich schon ein Stück weiter (vor Allem, da ich den Aktivierungsraum einschränken kann) - löst aber noch nicht das Problem:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:Z")) Is Nothing Then
fncUpdateZelle
End If
End Sub


Das Makro startet die Funktion.
Allerdings startet die Funktion mit einem Fokus auf eine neue Zelle. Und das Problem ist, dass die Zelleingabe den Fokus ja in beliebige Richtung verschiebt und ich aber ja den gerade geänderten Wert in die DB schreiben möchte - jetzt das System aber nicht weiss, wo der letzte Zellfokus lag.
Bsp:
Ich ändere den Wert in Zelle C3 und kann jetzt mit den Pfeiltasten oder der Return-Taste aus der Zelle raus. Der Wert ändert sich und triggert das Makro - und verschiebt aber den Fokus - damit wird der gerade geänderte Wert nicht geschrieben.
Eigentlich müsste das Makro ablaufen, bevor sich der Zellfokus verschiebt... geht das irgendwie?
Klar könnte ich auch die ganze DB schreiben, aber das ist mit der Performance Unsinn - ich will nur einen Wert schreiben.

Anzeige
AW: Bei Änderung eines Zellenwertes Makro ausführen
18.07.2008 12:55:09
UweD
Hallo
du suchst die Adresse der Zelle, die gerade geändert wurde?

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:Z")) Is Nothing Then
'die Zelle der Änderung ermitteln
MsgBox "Zelle: " & Target.Address
MsgBox "Spalte: " & Target.Column
MsgBox "Zeile: " & Target.Row
fncUpdateZelle
End If
End Sub


Gruß UweD

Anzeige
AW: Bei Änderung eines Zellenwertes Makro ausführen
18.07.2008 15:22:00
John
Hallo Uwe,
danke für den Tipp.
Ich habe jetzt mal versucht, der Funktion die Variable "Target" mit zugeben und habe immer einen Fehler bekommen. Kann aber auch sein, dass mein Syntax da falsch ist.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:Z")) Is Nothing Then
fncUpdateZelle (Target)
End If
End Sub


Da kriege ich den Hinweis kein Objekt vorhanden.
Ich habe dann einen Kunstgriff gemacht und das geht wiederum:


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:Z")) Is Nothing Then
Cells(Target.Row, Target.Column).Activate
fncUpdateZelle
End If
End Sub


Vielleicht liege ich auch viel zu kompliziert...

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Makro automatisch ausführen bei Änderung eines Zellenwertes in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne das Excel-Dokument, in dem du das Makro implementieren möchtest.

  2. Rechtsklicke auf den Tabellennamen unten (z.B. "Tabelle1") und wähle „Code anzeigen“.

  3. Füge den folgenden VBA-Code ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("A:Z")) Is Nothing Then
           ' Hier dein Makro aufrufen
           fncUpdateZelle
       End If
    End Sub

    Dieser Code sorgt dafür, dass das Makro ausgeführt wird, wenn sich der Inhalt einer Zelle im Bereich A bis Z ändert.

  4. Speichere die Änderungen und schließe den VBA-Editor.


Häufige Fehler und Lösungen

  • Fehler: "Kein Objekt vorhanden"
    Dieser Fehler tritt auf, wenn du versuchst, auf ein Objekt zuzugreifen, das nicht existiert. Stelle sicher, dass der Bereich korrekt definiert ist und die Funktion fncUpdateZelle existiert.

  • Problem: Makro wird nicht ausgelöst
    Überprüfe, ob die Zelle, die du änderst, im festgelegten Bereich (A:Z) liegt. Wenn du den Bereich ändern möchtest, passe die Range("A:Z")-Angabe entsprechend an.


Alternative Methoden

Wenn du ein Makro ausführen möchtest, wenn sich ein Wert in einer Zelle ändert, kannst du die Application.OnUndo Methode verwenden, um die letzte Aktion rückgängig zu machen und das Makro auszuführen. Dies ist jedoch komplexer und wird seltener verwendet.


Praktische Beispiele

  1. Makro zum Schreiben in eine Datenbank: Wenn du den Wert einer Zelle in eine MySQL-Datenbank schreiben möchtest, kannst du den Code wie folgt anpassen:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("A1")) Is Nothing Then
           Call WriteToDatabase(Target.Value)
       End If
    End Sub
  2. Fokus auf die geänderte Zelle: Um sicherzustellen, dass der Fokus auf der geänderten Zelle bleibt, kannst du den folgenden Code verwenden:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("A:Z")) Is Nothing Then
           Cells(Target.Row, Target.Column).Activate
           fncUpdateZelle
       End If
    End Sub

Tipps für Profis

  • Verwende die Application.EnableEvents-Methode, um zu verhindern, dass das Makro erneut ausgelöst wird, während du Änderungen vornimmst:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Application.EnableEvents = False
       ' Dein Code hier
       Application.EnableEvents = True
    End Sub
  • Teste deinen Code regelmäßig, um sicherzustellen, dass alles wie gewünscht funktioniert.


FAQ: Häufige Fragen

1. Wie kann ich ein Makro automatisch ausführen, wenn sich der Wert in einer Zelle ändert?
Du kannst das Worksheet_Change-Ereignis verwenden, um das Makro auszuführen, wenn eine Zelle bearbeitet wird.

2. Was tun, wenn das Makro nicht reagiert?
Überprüfe den Zellbereich, in dem das Makro ausgelöst werden soll, und stelle sicher, dass die Syntax im VBA-Code korrekt ist.

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