Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: find und instr oder iserror kombinieren

VBA: find und instr oder iserror kombinieren
13.11.2014 15:26:30
tomcatoggo
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

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!

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: find und instr oder iserror kombinieren
13.11.2014 15:50:42
Rudi
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

AW: VBA: find und instr oder iserror kombinieren
13.11.2014 16:33:08
tomcatoggo
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"

Anzeige
AW: VBA: find und instr oder iserror kombinieren
13.11.2014 16:33:38
tomcatoggo
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"

Anzeige
AW: VBA: find und instr oder iserror kombinieren
13.11.2014 16:34:56
tomcatoggo
.

AW: VBA: find und instr oder iserror kombinieren
13.11.2014 17:00:38
Rudi
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
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige