Formel aktivieren wenn keine EIngabe in Zelle

Hallo Zusammen,

ich habe eine Frage zu Excel 2007. Ist es möglich eine Formel in einer Zelle (xy) zu hinterlegen, ohne das diese durch eine Eingabe in dieser gleichen Zelle (xy) gelöscht wird. Excel soll die Formel ausführen, wenn keine Eingabe erfolgt, bzw. wieder aktivieren, wenn der Wert nach einer EIngabe wieder gelöscht wird. Kann man diesen Zirkelbezug irgendwie aushebeln ?

Vielen Dank

Grüezi Rossi

ich habe eine Frage zu Excel 2007. Ist es möglich eine Formel
in einer Zelle (xy) zu hinterlegen, ohne das diese durch eine
Eingabe in dieser gleichen Zelle (xy) gelöscht wird.

Nein, es gilt das Entweder/Oder Prinzip:

Entweder es steht eine Formel in einer Zelle

Oder es steht eine direkte Eingabe in der Zelle

Excel
soll die Formel ausführen, wenn keine Eingabe erfolgt, bzw.
wieder aktivieren, wenn der Wert nach einer EIngabe wieder
gelöscht wird. Kann man diesen Zirkelbezug irgendwie aushebeln
?

Wie wäre es, die Eingabe ggf in einer anderen Zelle zu tätigen und die Formel dann ensprechend anzupassen?

Allenfalls könnte man noch per VBA-Programmierung beim Löschen des Inhaltes eine Formel wieder reinschreiben lassen, doch das sehe ich eher als ‚Gebastel‘…

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hoi Thomas,

das dachte ich mir auch schon, dass eine aufwendige Lösung ausschliesslich über VBA erfolgen kann. Leider bin ich auf dem Gebiet „noch“ ein Laie. Werde die Daten dann in eine andere Zelle schreiben.

Vielen Dank für die Rückmeldung.

Gruss Marco

Hallo Marco.

Leider bin ich auf dem Gebiet „noch“ ein Laie

Jeder hat 'mal angefangen. Warum nicht jetzt? :smile:

Ich habe ein kleines Beispiel vorbereitet. Wenn Du Lust hast, kannst Du es ja 'mal ausprobieren. Am besten eine neue Datei verwenden.

Auf dem Tabellenblatt „Tabelle1“ :

Trage in Zelle A2 eine beliebige Zahl ein.
Trage in Zelle A3 eine beliebige Zahl ein.

Gehe bitte in den VisualBasic-Editor und doppelklicke dort im Projekt-Explorer auf „Tabelle1“, sodass sich das Code-Fenster von „Tabelle1“ öffnet.

Im Code-Fenster von „Tabelle1“:

Bitte den folgenden Code kopieren und ins Code-Fenster einfügen:

Private Sub Worksheet\_Change(ByVal Target As Range)
 On Error GoTo ErrHandler 'Verzweige bei einem Fehler zur Sprungmarke "ErrHandler".
 If (Target.Rows.Count \> 1) Or (Target.Columns.Count \> 1) Then 'Wenn die aktuelle Markierung mehr als eine Zeile oder mehr als eine Spalte umfaßt, dann...
 GoTo ExitSub 'dann verzweige zur Sprungmarke "ExitSub"
 End If
 Select Case Target.Row 'Überprüfe die Zeile der aktuellen Markierung.
 Case 1 'Wenn die Zeile der aktuellen Markierung 1 ist, dann...
 Select Case Target.Column 'überprüfe die Spalte der aktuellen Markierung.
 Case 1 'Wenn die Spalte der aktuellen Markierung A ist, dann...
 Application.EnableEvents = False 'verhindere das Auslösen von Ereignissen.
 If IsEmpty(Target) = False Then 'Wenn die markierte Zelle nicht leer ist, dann...
 GoTo ExitSub 'verzweige zur Sprungmarke "ExitSub".
 Else 'Anderenfalls
 Target.FormulaR1C1 = "=SUM(R[1]C:R[2]C)" 'Trage in die markierte Zelle die Formel "=SUMME(A2:A3)" ein.
 Target.Calculate 'Berechne die markierte Zelle.
 End If
 End Select
 End Select

ExitSub:
 Application.EnableEvents = True 'ermögliche das Auslösen von Ereignissen.
 Exit Sub

ErrHandler:
 Beep
 Resume ExitSub 'Fahre fort bei der Sprungmarke "ExitSub"
End Sub

Das war’s eigentlich schon. Klicke nun im Menü „Debuggen“ auf „Kompilieren von …“ und beende ggf. den Entwurfsmodus.

Gehe nun zurück nach Excel und gebe einen Wert in Zelle A1 ein oder lösche den darin enthaltenen.

VG
Carsten