![]() |
Betrifft: VBA: find und instr oder iserror kombinieren
von: tomcatoggo
Geschrieben am: 13.11.2014 15:26:30
Hallo!
da ich jetzt etliche Stunden an diesem Problem hänge und einfach gar nicht verstehe, warum so eine (so dachte ich das zumindest) super simple Sache sich nicht lösen lässt, frage ich jetzt mal hier nach:
Ich denke ich brauche hier nix extra hochladen... hier die Beschreibung:
A1 Fe2O3
A2 C
A3 Fe
A4 O
A5 H
Code:
Function AnzahlAtome(Substance As String, Element As String) As Variant Dim LenElement As Integer Dim DimFind As Double LenElement = Len(Element) If InStr(1, Substance, Element, vbTextCompare) = 0 Then AnzahlAtome = 0 Else AnzahlAtome = LenElement '(das ist nur zum Test hier) End If End Function
![]() ![]() |
Betrifft: AW: VBA: find und instr oder iserror kombinieren
von: Rudi Maintaire
Geschrieben am: 13.11.2014 15:50:42
Hallo,
WSFct.Find(...) erzeugt einen Fehler, falls nicht vorhanden.
Da du DimFind als Double deklariert hast, wird die ganze Function an der Stelle beendet. Deshalb #Wert.
Dim DimFind as Variant sollte helfen.
Gruß
Rudi
![]() ![]() |
Betrifft: AW: VBA: find und instr oder iserror kombinieren
von: tomcatoggo
Geschrieben am: 13.11.2014 16:33:08
Das hatte ich auch schon probiert. Leider bleibt es beim Fehler. Aber auch wenn das einen Fehler produziert (was ich ja gewissermaßen beabsichtige), warum nimmt er das dann als Ergebnis der Funktion, obwohl ich die Variable nirgends sonst verwende und danach (oder auch davor) dann ja die Funktion mit AnzahlAtome = ... "beantworte"
![]() ![]() |
Betrifft: AW: VBA: find und instr oder iserror kombinieren
von: tomcatoggo
Geschrieben am: 13.11.2014 16:33:38
Das hatte ich auch schon probiert. Leider bleibt es beim Fehler. Aber auch wenn das einen Fehler produziert (was ich ja gewissermaßen beabsichtige), warum nimmt er das dann als Ergebnis der Funktion, obwohl ich die Variable nirgends sonst verwende und danach (oder auch davor) dann ja die Funktion mit AnzahlAtome = ... "beantworte"
![]() ![]() |
Betrifft: AW: VBA: find und instr oder iserror kombinieren
von: tomcatoggo
Geschrieben am: 13.11.2014 16:34:56
.
![]() ![]() |
Betrifft: AW: VBA: find und instr oder iserror kombinieren
von: Rudi Maintaire
Geschrieben am: 13.11.2014 17:00:38
Hallo,
durch den Fehler wird die Function nicht komplett durchlaufen, d.h. End Function wird nicht erreicht. Somit liefert sie auch keinen Rückgabewert.
Kannst du einfach testen, indem du einen Haltepunkt setzt und den Code mit F8 durchgehst.
Gruß
Rudi
![]() |