Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1376to1380
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

Array mit Prozedur ohne Dupletten füllen

Array mit Prozedur ohne Dupletten füllen
18.08.2014 11:44:04
Hendrik
Hallo zusammen,
folgende Prozedur verwende ich, um einem Array einen Wert hinzuzufügen, sofern er noch nicht im Array steht:

Sub ergaenzeArray(strArray() As String, strWert1 As String, strWert2 As String)
Dim blnNeu As Boolean
Dim i As Long
blnNeu = True
For i = 0 To UBound(strArray)
If strArray(i, 0) = strWert1 Then
blnNeu = False
Exit For
End If
Next i
If blnNeu = True Then
If strArray(0, 0) = "" Then
strArray(0, 0) = strWert1
strArray(0, 1) = strWert2
Else
ReDim Preserve strArray(0 To i, 0 To 1)
strArray(i, 0) = strWert1
strArray(i, 1) = strWert2
End If
End If
End Sub
Wenn ich die Prozedur aufrufe

Call ergaenzeArray(strArrFilterKategorien(), "Test", "Tralalla"

und der Eintrag hinzugefügt werden soll, bekomme ich an der Stelle der Redim einen Abbruch ("Index außerhalb des gültigen Bereichs"). Warum?
Könnte man meine Prozedur ansonsten irgendwie optimieren?
Danke und Grüße
Hendrik

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array mit Prozedur ohne Dupletten füllen
18.08.2014 13:20:03
Daniel
Hi
das Problem ist, dass du mit REDIM PRESERVE immer nur die letzte Dimension verändern kannst.
das liegt wahrscheinlich daran, dass VBA auch bei mehrdimensionalen Arrays die Werte im Speicher linear ablegt.
Die Werte der letzen Dimension liegen am Datenende, so dass es relativ problemlos ist, diese zu erweitern oder zu kürzen.
Bei Änderungen in den davorliegenden Dimensionen müssten alle Daten komplett neu angeordnet werden und das hat MS dann doch nicht umgesetzt (ist aber wie gesagt, nur eine Vermutung von mir)
wenn du die Variable in der ersten Dimension erweitern willst, müsstest du zunächst ein neues Array anlegen, welches um 1 grössser ist als das alte, dann per Schleife alle Werte aus dem alten Array ins neue übertragen und zum Schluss den neuen Wert am Ende eintragen.
Gruß Daniel

Anzeige
AW: Array mit Prozedur ohne Dupletten füllen
18.08.2014 14:41:22
Hendrik
Danke, Daniel!

anstatt einem Array ...
19.08.2014 10:18:00
Rudi
Hallo,
kannst du auch eine Collection oder ein Dictionary nehmen.
Gruß
Rudi

112 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige