Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
392to396
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
392to396
392to396
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Collection nimmt keine benutzerdefinierten Typen

Collection nimmt keine benutzerdefinierten Typen
04.03.2004 08:14:42
Hubert Z.
Liebe Excel-Gemeinde,
ist lange her, dass ich hier war. Schön, dass es immernoch so viele hilfsbereite Leute gibt!!
Mein Problem (https://www.herber.de/bbs/user/4061.xls):
Bisher war meine Vorgehensweise immer die, mit if, while, etc. gewisse Daten auszulesen die gewissen Bedingungen entsprechen. Dies wird in meinem aktuellen Projekt aber Programmcode-technisch nun zu kompliziert. Deswegen meine Idee:
Ich lese alle Daten zeilenweise in ein Feld (benutzerdefiniert) ein und übergebe dies dann gesamt an eine Collection. In der Collection lösche ich dann nach und nach die Daten die NICHT gewissen Kriterien entsprechen (also z.B. in Spalte B der Beispieldatei alle, die ein "A" enthalten.
Problem: Eine Collection kann offensichtlich keine benutzerdefinierten Typen aufnehmen.
Frage: Wie kann ich benutzerdefinierte Typen einer Collection übergeben?

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Collection nimmt keine benutzerdefinierten Typen
04.03.2004 09:17:41
Ilja
Hallo!
Schreibe statt eines Datentyps eine Klasse mit gewünschten Eigenschaften als Public.Und dann:
Set myObj= New ClsMeineKlasse
Set Col = New Collection
Col.Add myObj
Zugreifen:
Col.item(myObj).Property
gruß
AW: Collection nimmt keine benutzerdefinierten Typen
04.03.2004 09:24:01
Hubert Z.
Danke für Deine Hilfe Ilja, hört sich sinnvoll an. Ich werde das direkt ausprobieren und wenn Du nichts mehr von mir hörst bin ich damit klar gekommen.
Beispiel
04.03.2004 10:49:12
Ilja
Hallo, hier ist ein komplettes Beispiel (VBA-Hilfe):
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

Anzeige
AW: Beispiel
04.03.2004 10:58:34
Hubert Z.
Tja, Ilja,
natürlich habe ich vorher in den Hilfen und in der Herber-Recherche nachgesehen, bevor ich die Leute hier unnötig aufhalte. In der Hilfe stand allerdings nichts über das einlesen von benutzerdefinierten Typen in eine Collection.
Du hast mich dann auf den richtigeren Weg gebracht. Danke nochmal.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige