AW: Zeilen in einem String Array löschen
27.10.2010 22:53:08
Swen
Hi Bernd, Hi @ all,
ich habe es jetzt etwas abgeändert:
Funktion*****************************************************************
Public Function Slice(ar As Variant, _
Optional iUnten As Variant, _
Optional iOben As Variant) _
As String
Dim iMin As Long, _
iMax As Long, _
i As Long, _
i2 As Long, _
iMinSpalte As Long, _
iMaxSpalte As Long
If Not IsArray(ar) Then Exit Function
If IsMissing(iUnten) Then iUnten = LBound(ar, 1)
If IsMissing(iOben) Then iOben = UBound(ar, 1)
iMinSpalte = Application.Max(LBound(ar, 2))
iMaxSpalte = Application.Min(UBound(ar, 2))
iMin = Application.Max(LBound(ar, 1), iUnten)
iMax = Application.Min(UBound(ar, 1), iOben)
ReDim arNeu(iMax - iMin, iMaxSpalte - iMinSpalte) As Variant
If iMax >= iMin Then
ReDim arNeu(iMax - iMin, iMaxSpalte - iMinSpalte) As Variant
For i = 0 To iMax - iMin
For i2 = 0 To iMaxSpalte - iMinSpalte
arNeu(i, i2) = ar(iMin + i, i2)
Next i2
Next i
End If
End Function
******************************************************************************
Und diese Rufe ich wie folgt auf:
Aufruf *****************************************************************
Sub test()
Dim dChrom(4,4) As String
dChrom(0,0) = "test0/0"
dChrom(0,1) = "test0/1"
dChrom(0,2) = "test0/2"
dChrom(0,3) = "test0/3"
dChrom(1,0) = "test1/0"
dChrom(1,1) = "test1/1"
dChrom(1,2) = "test1/2"
dChrom(1,3) = "test1/3"
dChrom(2,0) = "test2/0"
dChrom(2,1) = "test2/1"
dChrom(2,2) = "test2/2"
dChrom(2,3) = "test2/3"
dChrom(3,0) = "test3/0"
dChrom(3,1) = "test3/1"
dChrom(3,2) = "test3/2"
dChrom(3,3) = "test3/3"
Dim dChromTemp() As String
dChromTemp = Slice(dChrom, 2)
End Sub
aber er steigt immer bei
dchromTemp = Slice(dChrom, 2)
aus.... Und ich verstehe nicht warum...
"Slice(dChrom, 2)" müsste doch das reduzierte array zurück geben
und das array "dChromTemp" ist noch nicht beschrieben und
mit Dim dChromTemp() As String angelegt....
Wo ist der denkfehler?
gruß
swen