Microsoft Excel

Excel und VBA: Formeln, Programmierung, Lösungen

Die Excel/VBA-Beispiele

VBA-Begriff: Collection-Objekt (Beispiel)

In diesem Beispiel wird ein Collection-Objekt (TestClasses) erstellt und dann ein Dialogfeld erzeugt, mit dem die Benutzer Objekte zur Auflistung hinzufügen können. Sie können dieses Beispiel verwenden, indem Sie aus dem Menü Einfügen den Befehl Klassenmodul wählen und eine öffentliche Variable mit dem Namen Instanzname auf der Modulebene von Klasse1 deklarieren (geben Sie Public Instanzname ein), die die Namen der einzelnen Instanzen aufnimmt. Ändern Sie den Standardnamen Klasse1 nicht. Kopieren Sie den folgenden Code, und fügen Sie ihn in Abschnitt "Allgemein" eines anderen Moduls ein. Starten Sie dann den Code mit der Anweisung Klassenbezeichnung in einer anderen Prozedur. (Dieses Beispiel kann nur in Host-Anwendungen ausgeführt werden, die Klassen unterstützen.)

Sub Klassenbezeichnung()
    Dim TestClasses As New Collection    ' Collection-Objekt erstellen.
    Dim Num        ' Zähler für Namen der 
                    ' einzelnen Schlüssel.
    Dim Mldg As String        ' Variable für Eingabetext.
    Dim DerName, Objekt1, Namensliste    ' Variant-Werte für 
                    ' Informationen.
    Do
        Dim Inst As New Klasse1    ' Neue Klasse1-Instanz erstellen.
        Num = Num + 1    ' Num hochzählen und Namen abrufen.
        Mldg = "Welchen Namen soll das Objekt bekommen?" & Chr(13) _
         & "Drücken Sie 'Abbrechen', um die Namen in der Auflistung " & _
            "anzuzeigen".
        DerName = InputBox(Mldg, "Namen der Auflistungselemente")
        Inst.Instanzname = DerName    ' Name in Objektinstanz speichern.
        ' Wenn Benutzer einen Namen eingegeben hat, Objekt zur Auflistung
        ' hinzufügen.
        If Inst.Instanzname <> "" Then
            ' Benanntes Objekt zur Auflistung hinzufügen.
            TestClasses.Add item := Inst, key := CStr(Num)
        End If
        ' Aktuellen Verweis als Vorbereitung auf den nächsten löschen.
        Set Inst = Nothing
    Loop Until DerName = ""
    For Each Objekt1 In TestClasses    ' Namensliste erstellen.
        Namensliste = Namensliste & Objekt1.Instanzname & Chr(13)
    Next Objekt1
    ' Namensliste in einem Meldungsfeld anzeigen.
    MsgBox Namensliste, , "Instanznamen in TestClasses-Auflistung"

    For Num = 1 To TestClasses.Count    ' Name aus Auflistung
                    ' entfernen.
        TestClasses.Remove 1    ' Da Auflistungen automatisch 
                ' neu indiziert werden, jeweils das
                ' erste Element bei jeder 
    Next        ' Iteration entfernen.
End Sub