Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

werte in array eintragen und wieder auslesen

Forumthread: werte in array eintragen und wieder auslesen

werte in array eintragen und wieder auslesen
13.10.2003 11:47:35
rainer
Hallo! Ich steh wieder mal vor einem kleinen Problem:
Ich möchte die Zellwerte eines Bereiches (z.B. b1 bis b5) in einen Array einlesen. Später will ich dann prüfen, ob ein wert bereits in diesem Array enthalten ist. Wenn nein, soll er eingefügt werden.
Wie kann ich sowas machen?

Danke und Gruß
Rainer
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: werte in array eintragen und wieder auslesen
13.10.2003 12:53:37
ChrisL
Hi Rainer

Hier ein Ansatz...

Option Explicit


Sub t()
Dim iZeile As Integer
Dim neuerWert As Variant
' Array abfüllen
ReDim MyArray(4) As Variant
For iZeile = 1 To 5
MyArray(iZeile - 1) = Cells(iZeile, 2)
Next iZeile
neuerWert = "A"
' Check ob Wert vorhanden
For iZeile = 0 To UBound(MyArray)
If MyArray(iZeile) = neuerWert Then
MsgBox "Wert existiert bereits"
Exit Sub
End If
Next iZeile
' Array redimensionieren
ReDim Preserve MyArray(UBound(MyArray) + 1)
' Neuer Wert hinzufügen
MyArray(UBound(MyArray)) = neuerWert
MsgBox "neuer Wert hinzugefügt."
End Sub


Gruss
Chris
Anzeige
AW: werte in array eintragen und wieder auslesen
13.10.2003 13:05:08
rainer
Danke Chris, das hilft mir weiter.
Auf euch ist eben Verlaß
Gruß
Rainer
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Werte in ein Array eintragen und wieder auslesen


Schritt-für-Schritt-Anleitung

Um Zellwerte in ein Array einzutragen und diese später wieder auszulesen, kannst du den folgenden VBA-Code verwenden. Dieser Ansatz ermöglicht es dir, die Werte aus einem bestimmten Zellbereich (z.B. B1 bis B5) in ein Array zu laden und zu überprüfen, ob ein neuer Wert bereits darin enthalten ist.

Sub t()
    Dim iZeile As Integer
    Dim neuerWert As Variant
    ' Array abfüllen
    ReDim MyArray(4) As Variant
    For iZeile = 1 To 5
        MyArray(iZeile - 1) = Cells(iZeile, 2)
    Next iZeile
    neuerWert = "A"
    ' Check ob Wert vorhanden
    For iZeile = 0 To UBound(MyArray)
        If MyArray(iZeile) = neuerWert Then
            MsgBox "Wert existiert bereits"
            Exit Sub
        End If
    Next iZeile
    ' Array redimensionieren
    ReDim Preserve MyArray(UBound(MyArray) + 1)
    ' Neuer Wert hinzufügen
    MyArray(UBound(MyArray)) = neuerWert
    MsgBox "neuer Wert hinzugefügt."
End Sub

Dieser Code zeigt, wie du mit Excel VBA Zellwerte aus einem Bereich auslesen und in ein VBA Array speichern kannst. Zudem wird überprüft, ob ein neuer Wert bereits im Array vorhanden ist.


Häufige Fehler und Lösungen

  1. Fehler: "Typenkonflikt" beim Zuweisen von Werten

    • Lösung: Stelle sicher, dass die Zellwerte den gleichen Datentyp haben. Verwende Variant, um unterschiedliche Datentypen zu akzeptieren.
  2. Fehler: "Unterlauf" beim Redimensionieren des Arrays

    • Lösung: Überprüfe die Grenzen des Arrays mit UBound. Vermeide das Redimensionieren vor der Initialisierung.

Alternative Methoden

Eine alternative Methode, um Werte aus einer Matrix auszulesen, ist die Verwendung von Collections oder Dictionaries. Diese bieten eine flexiblere Handhabung von Werten, da sie automatisch Duplikate verhindern.

Dim myCollection As New Collection
On Error Resume Next
myCollection.Add neuerWert, CStr(neuerWert)
On Error GoTo 0

Diese Methode eignet sich besonders gut, wenn du die Werte aus einer größeren Datenmenge ohne manuelle Überprüfung der Duplikate speichern möchtest.


Praktische Beispiele

Angenommen, du möchtest die Werte aus einem Bereich (zum Beispiel B1 bis B5) in ein Array einlesen und die Werte in einer MsgBox ausgeben. Der folgende Code zeigt, wie du dies umsetzen kannst:

Sub WerteAusgeben()
    Dim iZeile As Integer
    Dim MyArray() As Variant
    ReDim MyArray(4) As Variant
    For iZeile = 1 To 5
        MyArray(iZeile - 1) = Cells(iZeile, 2)
    Next iZeile
    For iZeile = LBound(MyArray) To UBound(MyArray)
        MsgBox MyArray(iZeile)
    Next iZeile
End Sub

Dieser Code hilft dir dabei, die Excel Werte aus der Matrix auszulesen und in einer Nachricht anzuzeigen.


Tipps für Profis

  • Nutze Debug.Print, um Zwischenergebnisse im Direktfenster auszugeben und die Codeausführung zu überwachen.
  • Experimentiere mit ArrayList für dynamische Arrays, die sich automatisch anpassen.
  • Vermeide die Nutzung von On Error Resume Next, es sei denn, du weißt genau, was du tust. Dies kann das Debugging erschweren.

FAQ: Häufige Fragen

1. Wie kann ich ein mehrdimensionales Array in VBA erstellen?
Du kannst ein mehrdimensionales Array wie folgt deklarieren:

Dim MyArray(1 To 5, 1 To 2) As Variant

2. Was ist der Unterschied zwischen ReDim und ReDim Preserve?
ReDim erstellt ein neues Array und löscht die vorherigen Werte, während ReDim Preserve die vorhandenen Werte beibehält, solange du nur die letzte Dimension des Arrays änderst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige