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 ?
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‘…
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.
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.