Hallo Horst,

On Mon, 22 Feb 2016 12:30:19 +0100 Horst wrote:
> Hallo,
>
> ich habe mir folgende Function gebastelt:
>
> function isInArray(afeld as variant,stext as variant) as integer '*ist
> stext in afeld?
> 'jetzt kann das Feld aber ein- oder mehrdimensional vorliegen. Wie
> kann ich das prüfen?
>     ibound2=ubound(afeld(),2) gibt eine Fehlermeldung bei einem
> eindimensionalen Feld
>
> Gibt es so eine Funktion irgendwo vordefiniert?
>
Ich kenne keine Funktion die so etwas liefert. Du kannst aber mit
IsArray prüfen ob dein Variant ein Array ist.
Dann machst du 2 verschachtelte Abfragen:
If IsArray(afeld) Then
    If IsArray( afeld( LBound(afeld) ) Then
        ' zweidimensional
    Else
        ' eindimensional
    End If
Else
    ' Abbruch: afeld kein Array
End If

Wenn du wissen willst wie viele Dimensionen ein Array hat brauchst du
eine kleine rekursive Funktion:
Function NumberDims(B as Variant, optional DontUseThisVar as boolean) as
Integer
    If IsMissing(DontUseThisVar) Then
        NumberDims = 0
    End If   
    If IsArray(B) Then   
        NumberDims = NumberDims(B(LBound(B)), DontUseThisVar) + 1
    End If
End Function

Sub TestNumberOfDimensions
    A= Array(Array("A1","B1"),Array("A2","B2"))
    B= Array("Text A", "Text B")
    C= "Just a string."
    Print "A has " + NumberDims(A) + " dimensions"
    Print "B has " + NumberDims(B) + " dimensions"
    Print "C has " + NumberDims(C) + " dimensions"
End Sub


Grüße Jochen

Attachment: signature.asc
Description: OpenPGP digital signature

Antwort per Email an