Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1392to1396
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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!

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"

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
Anzeige

338 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige