Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1256to1260
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Werte aus Array löschen

Werte aus Array löschen
Michael2010
Hallo allerseits,
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

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Werte aus Array löschen
17.04.2012 12:19:15
CitizenX
Hi,
zum sammmeln von ungleichen Werten /löschen eignet sich besser das "Dictionary"
an bei mal ein Bsp davon und wie die deine Variante umsetzen kannst:

Option Explicit
Sub test1()
Dim oDict As Object
Dim varBereich, i As Long
Dim strSuchDatum As String
Set oDict = CreateObject("Scripting.dictionary")
' dein Suchdatum
strSuchDatum = "02.02.2012"
' dein Datumsbereich
varBereich = Range("E8:E24")
'nur ungleiche Werte sammeln
For i = 1 To UBound(varBereich, 1)
oDict(CStr(varBereich(i, 1))) = vbNullString
Next
'Suchwert löschen wenn vorhanden
If oDict.Exists(strSuchDatum) Then
oDict.Remove strSuchDatum
Else
MsgBox strSuchDatum & " existiert nicht"
End If
'Ausgabe
MsgBox Join(oDict.Keys, vbNewLine)
End Sub
Sub test2()
Dim myArr
Dim i As Integer, x As Integer
myArr = 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
myArr = Application.Transpose(myArr)
'und den letzten Wert löschen
ReDim Preserve myArr(UBound(myArr) - 1)
MsgBox Join(myArr, vbCrLf)
End Sub

Grüße
Steffen
Anzeige
AW: Werte aus Array löschen
23.04.2012 14:26:00
Michael2010
Das ist ein guten Ansatz,
ich habe das Problem erstmal auf eine andere Art gelöst.
Danke für den TIPP
Gruß
Michael
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge