Microsoft Excel

Herbers Excel/VBA-Archiv

Aufruf von UDF mit Array

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"?
  


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.


  


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


  


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.


  


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


  


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!


 

Beiträge aus den Excel-Beispielen zum Thema "Aufruf von UDF mit Array"