Hi,
der undokumentierte Formula-Befehl
@GetMembers(Liste;Position[;Anzahl])
liefert ja aus einer Liste ein oder mehrere Einträge ab der angegebenen Position.
Hat schonmal wer sowas in Lotus Script erstellt?
Ich bräuchte genau sowas in Script und will jetzt nicht das Rad neu erfinden.
Also eine Function die z.B. so aussieht:
Function Getmembers (strList As Variant, iPosition As Integer, iQuantity as Integer) As Variant
Hallo, Matthias,
ich bin mir noch nicht sicher, ob ich jetzt alle Fälle abgedeckt habe ... Auf jeden Fall ist der Funktion der Datentyp (relativ) egal, zurückgegeben wird auf jeden Fall ein Array (EMPTY, falls kein Result oder ein Fehler aufgetreten ist oder falsche Parameter übergeben wurden).
HTH,
Bernhard
PS: Die Routine "ErrorHandler" muss man sich natürlich nach eigenen Bedürfnissen selber schreiben ...
Function ArrayGetMembers (vValues As Variant, iStartPos As Integer, iMembers As Integer)
' Purpose: Retrieve from position iPosition iMembers from the given array
' Arguments:
' vValues - the given array
' iPosition - the first element to retrieve (0 is the index of the first element)
' iMembers - the numbers of elements from the array to retrieve
' Returns: The array without the given value to remove, empty, if there is no value to return !
' Created by: Bernhard Koehler on 24.04.2004 Modified by:
Dim vResult () As Variant 'The resulting array
Dim vEmpty As Variant 'In case of errors / wrong parameters: An empty array
Dim iLoop As Integer
Dim iLastPos As Integer 'The real number of elements to retrieve
On Error Goto ErrorRoutine
ArrayGetMembers = vEmpty 'The default result (an empty variant)
If Isempty (vValues) Then
ArrayGetMembers = vEmpty
Exit Function
End If
If Isscalar (vValues) Then
If iStartPos = 0 Then
Redim vResult (0 To 0)
vResult (0) = vValues
ArrayGetMembers = vResult
Exit Function
Else
ArrayGetmembers = vEmpty
Exit Function
End If 'of "iPosition = 0"
End If 'of "Isscalar (vValues)"
If iStartPos > Ubound (vValues) Then
ArrayGetMembers = vEmpty
Exit Function
End If
If (iStartPos + iMembers) - 1 > Ubound (vValues) Then
iLastPos = Ubound (vValues) - iStartPos
Else
iLastPos = iMembers - 1
End If
Redim vResult (0 To iLastPos)
For iLoop = 0 To iLastPos
vResult (iLoop) = vValues (iStartPos + iLoop)
Next
ArrayGetMembers = vResult
Exit Function
ErrorRoutine:
Call ErrorHandler ("ArrayGetMembers")
Exit Function
End Function