Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1144to1148
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

UDF Funktion

UDF Funktion
Ingo
Hallo zusammen,
ich habe folgendes Problem:

Function weitere_datensätze(s_object As String) As Integer
Dim rng As Range
Dim firstAddress
With Sheets(1).Range("A2:A55")
Set rng = .Find(s_object, LookIn:=xlValues, lookat:=xlWhole)
If Not rng Is Nothing Then
firstAddress = rng.Address
Do
Set rng = .FindNext(rng)
If rng.Address  firstAddress Then
weitere_datensätze = weitere_datensätze + rng.Offset(0, 1)
End If
Loop While Not rng Is Nothing And rng.Address  firstAddress
End If
End With
End Function

mit dieser Funktion sollen mehrere Datensätze für den Suchbegriff ausgewertet werden außer dem ersten.
Wenn ich die Funktion aus VBA aufrufe kein Problem, aber wenn ich sie als Tabellenblattfunktion einfügen will kommt als Ergebnis immer nur #Wert!
Bitte um Hilfe
mfG
Ingo Christiansen
Find in UDF
18.03.2010 11:30:41
Matthias5
Hallo Ingo,
FIND funktioniert leider nicht bei UDFs, die aus dem Tabellenblatt aufgerufen werden.
Gruß,
Matthias
AW: ... stimmt nicht ganz
18.03.2010 11:53:04
xr8k2
Hallo,
.Find funktioniert sehr wohl in einer UDF ... nur mit dem .FindNext hat´s ein Problem.
Versuch mal ohne .FindNext:
Function weitere_datensätze(s_object As String) As Integer
Dim rng As Range
Dim firstAddress
With Sheets("Tabelle1").Range("A2:A55")
Set rng = .Find(what:=s_object, LookIn:=xlValues, lookat:=xlWhole)
If Not rng Is Nothing Then
firstAddress = rng.Address
Do
Set rng = .Find(what:=s_object, after:=rng, LookIn:=xlValues, lookat:=xlWhole)
If rng.Address  firstAddress Then
weitere_datensätze = weitere_datensätze + rng.Offset(0, 1)
End If
Loop While Not rng Is Nothing And rng.Address  firstAddress
End If
End With
End Function
GRuß,
xr8k2
Anzeige
Stimmt, funktioniert! Danke für den Hinweis! oT
18.03.2010 12:43:16
Matthias5
AW: ... stimmt nicht ganz
18.03.2010 13:49:44
Ingo
Danke xr8k2,
so funktioniert es super
mfG
Ingo christiansen
Eine UDF für eine bestehende Function?
18.03.2010 11:42:35
Renee
Ingo,
1. Spricht sie eine fixe Range an ? ... kann so nicht als Tabellenfunktion gebraucht werden?
2. Sollte sie vermutlich nichts anderes wie eine =SUMMEWENN Formel als Resultat zurückgeben
3. Arbeitet sie mit einer Integer Definition, versagt als bei Werten über 32767.
GreetZ Renée
AW: Eine UDF für eine bestehende Function?
18.03.2010 13:53:55
Ingo
Hallo Renee,
das mit der fixen range ist denke ich wurscht.
Summewenn geht eben nicht, weil ich den obersten Datensatz nicht mit drin haben will
Die Integergrenze ist kein problem. Die summen liegen im dreistelligen Bereich.
mfg
Ingo Christiansen
Anzeige
Na und, das ist doch wohl kein Problem...
18.03.2010 14:04:10
Renee
bei Excel gut, Ingo
=SUMMEWENN(Suchbereich;Kriterium;Summenbereich)-SVERWEIS(Kriterium;Bereich;2;FALSCH)
Integergrenze ist kein problem. Die summen liegen im dreistelligen Bereich.
mit einer solchen Einstellung, kommst du mit VBA nie auf gut!
GreetZ Renée
AW: Na und, das ist doch wohl kein Problem...
18.03.2010 14:32:18
Ingo
Hallo Renee,
mit der Formel hast du recht. hätt ich auch selber draufkommen müssen. was gegen Integer spricht,wnn die größten Werte (aufsummiert) im bereich 600 bis 700 liegen will mir allerdings nicht einleuchten.
MfG
Ingo Christiansen
Ganz einfach! Long ist schneller, weil nichts...
18.03.2010 19:07:06
Luc:-?
…zusätzlich eingeschränkt wdn muss, Ingo.
Schau dir mal'n paar vbFunctions an, da steht (fast) immer As Long bzw auf der anderen Seite As Double. Sollte einem doch zu denken geben — oder…?!
Gruß Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige