VBA: find und instr oder iserror kombinieren
13.11.2014 15:26:30
tomcatoggo
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
So wie die Funktion jetzt da steht, spuckt sie sauber 0,2,1,0 aus (von A2-A5) wenn ich als erste Variable die Zelle A1 und als zweite Variable A2,3,4,5) setze.
Füge ich zwischen "end if" und "End Function " dann noch folgende Zeile ein (sonst keinerlei Veränderung):
DimFind = WorksheetFunction.Find(Element, Substance, 1)
bekomme ich für A2 und A5 den "#Wert!"-Fehler. Das passiert auch, wenn ich die Zeile irgendwo sonst einfüge.
Die Frage daher: warum zum G.... zerschießt dieser Ausdruck teilweise die Funktion obwohl er (also die Variable) ja nirgends verwendet wird?
Danke im Voraus!