mit Array stehe ich irgendwie auf Kriegsfuß :-(
Ich lese einen Bereich verschiedenen Datums (E8 bis E24) in ein Array ein, weil ich auf diesem Weg schnell festestellen kann ob sich das Vergleichsdatum im Bereich E8:bis E24 befindet. Das klappt auch, doch kann es auch Datum mehrmal in dem Bereich geben, deshalb möchte ich ein gefundenes Datum aus dem Array löschen, dazu habe ich in der Forumsuche folgenden Code gefunden.
Option Explicit
Sub test()
Dim myArr As Variant
Dim i As Integer, x As Integer
myArr = Array("a", "b", "c", "d", "e")
'der 2. Wert soll gelöscht werden
x = 2
x = x - 1 'denn der "zweite" Wert hat den Index 1, und nicht 2
For i = x To UBound(myArr) - 1
'alle Werte ab dem "zweiten" Wert um eins nach vorne schieben
myArr(i) = myArr(i + 1)
Next i
'und den letzten Wert löschen
ReDim Preserve myArr(UBound(myArr) - 1)
MsgBox Join(myArr, vbCrLf)
End Sub
Das funktioniert auch, jetzt kommt mein umngebauter Code.
Sub test()
Dim myArr As Variant
Dim i As Integer, x As Integer
myArr = Sheets("Ferien").Range("E8:E24")
'der 2. Wert soll gelöscht werden
x = 2
x = x - 1 'denn der "zweite" Wert hat den Index 1, und nicht 2
For i = x To UBound(myArr) - 1
'alle Werte ab dem "zweiten" Wert um eins nach vorne schieben
myArr(i, 1) = myArr(i + 1, 1)
Next i
'und den letzten Wert löschen
ReDim Preserve myArr(UBound(myArr) - 1)
MsgBox Join(myArr, vbCrLf)
End Sub
Beim Redim kommt der Fehler : Index außerhalb des gültigen Bereiches
Wenn ich mir die Werte im meinem Array ansehen ist das so aufgebaut.
myArr(1)
myArr(1,1) #02.04.2012#
.
.
. my Arr(17)
myArr(17,1) #14.12.2012#
Bei diesem Test ist der 2 Wert auch gelöscht worden doch das REDIM und löschen des Wertes klappt nicht
Kann mir jemand den Entscheidenden Hinweis geben?
Warum hat das Array 2 Dimensionen (1,1) wo ich nur eine Spalte einlese?
Der Fehler bei REDIM hat damit was zu tun, doch weiß ich nicht wo ich die 2 Dimension (,1) hinsetzen soll.
Gruß
Michael