Herbers Excel-Forum - das Archiv

Aufruf von UDF mit Array

Bild

Betrifft: Aufruf von UDF mit Array
von: Martin

Geschrieben am: 13.12.2005 13:06:21
Hallo!
Ich möchte eine UDF mit einem Array aufrufen. Auf diese Weise wäre eine beliebige Anzahl von Parametern eingebbar:
Function findStrings(sucheIn As String, searchStrings() As String) As Boolean
' UDF - wenn einer der Strings im Array searchStrings() ein Teilstring von suchIn ist, wird True zurückgegeben, sonst false.
For i = 0 To UBound(searchStrings)
'fehlt noch: if <searchStrings(i) ist Teilstring von sucheIn> findStrings = true
Next
findStrings = False
End Function

Dazu zwei Fragen:
1. Wie muss ich die UDF in Excel aufrufen? Mir schwebt etwas in der Art vor: =findStrings("Dies ist ein Test";{"nix","ist ein","wieder nix"}) So geht das aber nicht, man muss wohl ein Array irgendwie anders darstellen.
2. Terminiert die Rückgabe "findStrings = true" das Programm wie in Java oder läuft es noch weiter bis "findStrings = False"?
Bild

Betrifft: AW: Aufruf von UDF mit Array
von: MichaV

Geschrieben am: 13.12.2005 13:12:48
Hallo,
wenn Array, dann mit Punkten:
=findStrings("Dies ist ein Test";{"nix"."ist ein"."wieder nix"})
Option Explicit
Function findStrings(sucheIn As String, searchStrings) As Boolean
Dim i As Integer
' UDF - wenn einer der Strings im Array searchStrings() ein Teilstring von suchIn ist, wird True zurückgegeben, sonst false.
For i = LBound(searchStrings) To UBound(searchStrings)
If InStr(1, sucheIn, searchStrings(i), vbBinaryCompare) > 0 Then findStrings = True: Exit Function
Next
End Function

Gruss- Micha
PS: Rückmeldung wäre nett.
Bild

Betrifft: AW: Aufruf von UDF mit Array
von: Martin

Geschrieben am: 13.12.2005 13:34:16
Hallo Micha!
Klappt weiterhin nicht: "Ein in der Formel verwendeter Wert ist vom falschen Datentyp." macht auch Sinn - nach deinem Vorschlag wird dort ja ein String erwartet. Mit
Function findStrings(sucheIn As String, searchStrings() As String) As Boolean
geht es aber genauso wenig.
Viele Grüße,
Martin
Bild

Betrifft: AW: Aufruf von UDF mit Array
von: MichaV

Geschrieben am: 13.12.2005 13:37:47
Hallo,
bei mir klappt es. Hast Du es abgeschrieben oder kopiert?
Tabelle1
 A
1WAHR
2WAHR
Formeln der Tabelle
A1 : =findstrings("Hallodef";{"abc"."def"})
A2 : =findstrings("Dies ist ein Test";{"nix"."ist ein"."wieder nix"})
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
(XL 2000)
...und was heißt, bei mir wird ein String erwartet? Es wird ein Variant erwartet, das kann auch ein Datenfeld sein.
Gruss- Micha
PS: Rückmeldung wäre nett.
Bild

Betrifft: AW: Aufruf von UDF mit Array
von: Martin
Geschrieben am: 13.12.2005 13:43:29
Super, danke!
Ich hatte nur einen Teil kopiert und statt LBound(searchStrings) meine 0 stehen lassen. ist allerdings eine merkwürdige Fehlermeldung...
Viele Dank noch mal für die Hilfe!
Grüße, Martin
Bild

Betrifft: AW: Aufruf von UDF mit Array
von: MichaV

Geschrieben am: 13.12.2005 13:52:43
Hallo,
ja komisch.
Noch interessanter wird es, wenn Du das Array als Bereich (A1:A5) übergibst.
LBound und UBound funzt dann nicht mehr, IsArray aber schon. Und Du kannst die Werte mit searchStrings(i,1) abgreifen.
Gruss- Micha
PS: Danke für die Rückmeldung!
 Bild
Excel-Beispiele zum Thema "Aufruf von UDF mit Array"
SVERWEIS auf geschlossene Arbeitsmappe aus Makro aufrufen Datenmaske beim Aufruf mit Nullen füllen
Makros in Abhängigkeit vom Zellennamen aufrufen Makroaufruf abhängig vom Zellwert
Excel für die Zeit eines Dialogaufrufes ausblenden Makros zeitgesteuert aufrufen
AddIn aus Makro aufrufen Name der aufrufenden Schaltfläche abfragen
Code aufrufen und löschen Als Zellkontextmenü Listbox aufrufen