Knusperklumpen: VBA - Werte in einem Array "uniquen"

Hi.
Ich habe eine Range in einem Excel-Sheet, deren Werte ich in ein Array speichern möchte, dabei sollen aber keine Doppelungen auftreten, jeder Wert soll also maximal ein Mal im Array stehen (es soll letztendlich eine Combobox mit den Inhalten des Arrays gefüllt werden).
In PHP würde man jetzt ein unique üder das Array jagen, sowas gibt es allerdings in VBA nicht, oder ich weiß es nur nicht, was durchaus sein kann, da ich ein newbie auf diesem Gebiet bin :-/

Hat jemand eine Antwort für mich?
Danke und mfg
Knusperklumpen

  1. Hi,

    Ich habe eine Range in einem Excel-Sheet, deren Werte ich in ein Array speichern möchte, dabei sollen aber keine Doppelungen auftreten, jeder Wert soll also maximal ein Mal im Array stehen (es soll letztendlich eine Combobox mit den Inhalten des Arrays gefüllt werden).

    da würde ich zwei Möglichkeiten sehen:

    1. Du lässt eine Kopie des Bereiches erstellen und nach Doppelungen filtern. Das kannst Du mit den Bordmitteln von Excel machen. Für den Code kannst Du ja ein Makro aufzeichenen und Dich dann daran orientieren.

    2. Etwas ungünstig bei sehr vielen Daten, aber bei aktuellen Rechnern dürfte nichts zu merken sein:

    • Variable auf False setzen
    • Schleife über die bisher im Array enthaltenen Elemente
    • Wenn einzutragender Wert bereits enthalten: Variable auf True und Schleife verlassen
    • Wenn Variable = False, neues Element hnzufügen.

    Hilft's?

    Viele Grüße

    Jörg

    1. Hallo Jörg,

      Ich habe eine Range in einem Excel-Sheet, deren Werte ich in ein Array speichern möchte, dabei sollen aber keine Doppelungen auftreten, jeder Wert soll also maximal ein Mal im Array stehen (es soll letztendlich eine Combobox mit den Inhalten des Arrays gefüllt werden).

      ich hätte noch eine weitere Idee:

      Verwenden eines Dictionary-Objektes mit den Werten als Schlüsseln.
      Da gibt es solch wunderbare Methoden wie

      objekt.Exists(schlüssel)

      Und mit einer For-Each-Schleife über die Schlüssel, Zugriff mit

      objekt.Keys

      kann man wunderbar einfach die Combobox füllen.

      Hängt natürlich davon ab, ob Knusperklumpens VBA das Dictionary-Objekt bereits kennt.

      Freundliche Grüße

      Vinzenz

      1. Hi ... ich habe jetzt das mit dem dictionary-Objekt versucht.
        Dazu habe ich testweise erst Mal das Beispiel aus der Hilfe probiert, das scheitert allerdings schon.

        Dim d
        Set d = CreateObject(Scripting.Dictionary)
        d.Add "a", "Athens"
        d.Add "b", "Belgrad"
        d.Add "c", "Kairo"

        Er springt in Zeile 2 raus mit der Meldung "Laufzeitfehler 424 - Objekt erforderlich". Das erwuickt mich sehr, da ich es immer hasse, wenn Beispiele nicht funktionieren! Welches Objekt vermisst er denn bzw. kennt mein VBA 6.4.9972 dieses Objekt vielleicht doch nicht (was ich nicht glauben könnte, schließlich steht es auch in der Hilfe).

        Danke und mfg
        Knusperklumpen

        1. Huhu ... habs gefunden ... man könnte in der Hilfe auch gerne mal darauf hinweisen, dass die Microsoft Scripting Runtime aktiviert sein muss ... ;-)

          Naja, was soll man sagen ... ist halt nur ne einfach F1-Hilfe

          mfg
          Knusperklumpen