Anzeige
Archiv - Navigation
1732to1736
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zirkelbezug in VBA

Zirkelbezug in VBA
15.01.2020 11:31:18
Jonas
Hallo zusammen,
ich habe ein Formular geschrieben, wo auf der einen Seite Mitarbeiter ihre Arbeitsstunden erfassen können und auf der anderen Seite die Mitarbeiter angefallene Spesen eintragen können.
Oben befinden sich Zellen für Projektbezeichnungen, Abrechnungsmonat, etc. die immer auf beiden Seiten gleich seien sollen.
Der VBA-Befehl sieht wie folgt aus:
Spesenseite:
If Target.Address = "$M$7" Then
On Error GoTo ErrorHandler
Sheets("Stundenabrechnung").Range("M7") = Sheets("Spesenabrechnung").Range("M7").Value
End If

Stundenseite:

If Target.Address = "$M$7" Then
On Error GoTo ErrorHandler
Sheets("Spesenabrechnung").Range("M7") = Sheets("Stundenabrechnung").Range("M7").Value
End If

ErrorHandler
ErrorHandler:
End Sub

Dadurch habe ich das Problem, dass ich einen Zirkelbezug habe und die Datei dadurch sehr instabil ist und öfters abstürzt.
Gibt es einen anderen Weg, dass auf den beiden Seite immer die gleichen Informationen stehen ohne so einen Zirkelbezug entstehen zu lassen?
Freue mich auf eure Rückmeldung.
Liebe Grüße
Jonas

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zirkelbezug in VBA
15.01.2020 11:39:52
Daniel
Hi
das Problem ist, dass wenn du so ein Makro auf beiden Tabellen hast, eine Endlosschleife entsteht, weil sobald du den Wert in die erste Tabelle einträgt, dass Makro auf der zweiten Tabelle ausgelöst wird und es dann selbst versucht, dort den neuen Wert einzutragen, was wiederum dort dann das Makro auslöst.
du brauchst keinen Errorhändler, sondern musst verhindern, dass bei Änderung des Zellwertes durch das Makro vom anderen Tabellenblatt das Change-Event ausgelöst wird.
dazu gibt es Application.EnableEvents = False, welches die Ausführung der automatischen Makros verhindert.
Bei Makroende muss man allerdings die Option wieder aktivieren, sonst bleibt sie ausgeschaltet.
If Target.Address = "$M$7" Then
Application.EnableEvents = false
Sheets("Stundenabrechnung").Range("M7") = Sheets("Spesenabrechnung").Range("M7").Value
Application.EnableEvents = True
End If
auf dem anderen Blatt natürlich auch.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige