Clever-Excel-Forum

Normale Version: Fehler '#WERT!' in Formel '=WENN(...)'
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich führe in einer Excel-Tabelle (MS Office Pro Plus 2010) meine mit dem Motorrad
gefahrenen Etappen und die Tankintervalle.
Eine neue Zeile erzeuge ich mit dem Makro "newline", wobei ich auch die Formel
"=WENN(F4>0;tanken();0)" in die Hilfszelle F3 einfüge, damit durch das Einfügen
der neuen Zeile der Bezug nicht fehlerhaft wird.  
Die WENN-Formel soll eine benutzerdefinierte Funktion ausführen, sobald ich in die
Zelle F4 die Menge des getankten Benzins eintrage.
Die Funktion "tanken()" funktioniert auch im Debug-Modus, jedoch zeigt Excel die
WENN-Formel als fehlerhaft an.
Leider habe ich trotz tagelangem Suchen keine Lösung finden können.
Kann mir jemand eine Lösung für das Problem zeigen ?
Einen Screenshot und die Exceldatei hänge ich an.
[attachment=2163][attachment=2164]
Hi,


Zitat:
Code:
Die Funktion "tanken()" funktioniert auch im Debug-Modus, jedoch zeigt Excel die
WENN-Formel als fehlerhaft an. 


Du kannst mit einer Funktion, die Du aus dem Tabellenblatt heraus aufrufst, keine anderen Zellen fernsteuern. Aber genau das soll die Funktion tanken() erledigen.
[attachment=2171]
(25.05.2015, 17:45)inl1ner schrieb: [ -> ]@Boris
ich weiß nicht so recht, was Du mit 'fernsteuern' meinst, aber mittlerweile bin ich ein wenig weiter (s. unten)

Hi @all,
inzwischen habe ich herausgefunden, dass ich die Funktion nicht als Integer, sondern als 'Double' (oder Single) deklarieren muss, damit sie von der WENN-Formel ausgeführt wird. Allerdings läuft sie nur bis zu Zeile 30 und führt den Befehl "Cells(4, 5) = km" (km As Double) nicht aus. Mit 'Range("E4")' oder 'Cells(4, 5).Value' dasselbe, bzw. mit unterschiedlichsten Datentypen für 'km'. Im Debug-Mode-Einzelschritt läuft die Funktion jedoch problemlos bis zu Ende und auch der Zustand der Zellen ist anschließend so, wie erwartet.
Da ich einige Änderungen in der Funktion zum einfacheren Testen vorgenommen habe, hänge ich die Exceldatei nochmals an.
Bitte schreibt mir, wenn jemand eine Idee hat, was zu ändern ist.
Gruß, inl1ner
Hi

du kannst mit/in einer UDF(in einer Zelle aufgerufen) keine anderen Zellen verändern, das meinte Boris. Als Beispiel nehme folgende Funktion. Im Debugger läuft sie prima, gibst Du aber in Zelle B1 ein: =Test(3) , dann erhältst Du #WERT! zurück. Wenn du jetzt die Zeile mit Range..... auskommentierst dann arbeitet die Funktion wie eine UDF nunmal arbeitet. Ich hoffe es ist jetzt etwas klarer

Code:
Sub tst()
  Debug.Print Test(3)
End sub

Function Test(Val As Integer) As String
  Test = "So klappt es dann"
  Range("A1").Value = Val
End Function

Zu deinem eigentlichen Problem, da musst du dir etwas anderes einfallen lassen, hatte leider noch keine Zeit mir das näher anzusehen, aber bestimmt findet sich noch Jemand
(27.05.2015, 00:00)Winny schrieb: [ -> ]Hi Winny,
danke für Deine Antwort.
In der Tat kann ich die gewünschten Operationen in ein Makro packen. Nach der manuellen Eingabe des Zellwertes für 'Liter' durch Start des Makros mit 'Strg+t' wird das gewünschte Ergebnis erzielt.
Dies ist wenig elegant, daher habe ich weiter gesucht und die Möglichkeit gefunden, mit 'Worksheet_Change' die Zelländerung als Trigger für das Makro 'tanken' einzusetzen.
Gruß, inl1ner
P.S. Das Thema kann geschlossen werden
erledigt