Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1936to1940
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

warum verschwindet Collection aus Array?

warum verschwindet Collection aus Array?
24.07.2023 17:03:43
Florian
Hallo

habe was Seltsames entdeckt.
Eine Collection in einem Array verschwindet. Aber warum nur? Habe nirgends gelesen, dass man in ein dynamisches Array keine Collection legen darf. Gibt es da irgendwie Abhilfe?

Sub CollectionVerschwindet()
Dim a
ReDim a(1 To 5)
Set a(1) = New Collection
a(1).Add 44, "Joe"
Debug.Print Time, a(1).Count, a(1).Item("Joe") 'Das geht.
With a(1) 'Und weg ist die Collection aus dem Lokalfenster
Debug.Print Time, .Count, .Item("Joe") 'Geht trotzdem
End With
'Folgende Zeile liefert Fehler
Debug.Print Time, a(1).Count, a(1).Item("Joe") 'Collection ist weg

End Sub


LG, Florian

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: warum verschwindet Collection aus Array?
25.07.2023 14:09:18
Rudi Maintaire
Hallo,
ich würde stattdessen ein Dictionary benutzen. Das kannst du auch sofort als Array definieren.
Sub aaaa()
Dim objDic(1 To 6) As Object, oObj
Dim i As Integer, arr, arrItem

arr = Split("Joe Jack Ben Susi")
For i = 1 To 6
Set objDic(i) = CreateObject("scripting.dictionary")
For Each arrItem In arr
objDic(i)(arrItem & i) = i + 10 * Rnd
Next arrItem
Next i

For i = 1 To 6
For Each oObj In objDic(i)
Debug.Print oObj, objDic(i)(oObj)
Next
Next

End Sub

Gruß
Rudi
Anzeige
AW: warum verschwindet Collection aus Array?
25.07.2023 08:00:05
Zwenn
Hallo Florian,

Du musst hinter Dim a die Klammern für das Array setzen, wenn Du so arbeiten möchtest. Auf die Items der Collection kannst Du auch ohne das Wort Item direkt zugreifen. Das funktioniert aber nur ohne With, also ausgeschrieben.

Sub CollectionVerschwindet()
Dim a() 'Hier fehlten die Klammern
ReDim a(1 To 5)
Set a(1) = New Collection
a(1).Add 44, "Joe"
Debug.Print Time, a(1).Count, a(1)(1) 'Geht auch über Index
With a(1)
Debug.Print Time, .Count, .Item("Joe") 'funktioniert ebenfalls
End With

Debug.Print Time, a(1).Count, a(1)("Joe") 'geht, wenn oben Dim a() steht
End Sub


Viele Grüße,

Zwenn
Anzeige
AW: warum verschwindet Collection aus Array?
25.07.2023 13:23:36
Florian
Hi Zwenn,

dein Vorschlag funktioniert. Danke.

In meinem Beispiel geht es allerdings nicht, denn die Variable a ist in Modulebene: "Public a" Da ist "Public a()" nicht möglich, wie ich feststellen musste.

Was aber geht: Die Variable nicht deklarieren, denn mIt Redim geht es offensichtlich auch. Und damit geht auch die With-Klammer problemlos.

OK, Problem gelöst.Vielen Dank. Muss ich mir merken. Denn verstehen tu ich es nicht.

Hi onur,
Du schreibst: "Wer kommt denn auf die Idee, ein Array aus Collections zu machen? ENTWEDER Array ODER Collection."
Es funktioniert doch.
Ich habe 10 Leute, die an 4 Projekten arbeiten. Ein 10x4 Array ist schnell erstellt, schneller als eine Collection mit 10 Collections, von denen jede 4 Collections hat. Deshalb habe ich diesen Weg gewählt. Solange nichts dagegen spricht, bleibe ich dabei.

LG, Florian
Anzeige
AW: warum verschwindet Collection aus Array?
24.07.2023 17:23:08
onur
Wer kommt denn auf die Idee, ein Array aus Collections zu machen? ENTWEDER Array ODER Collection.
Siehe auch hier:
https://stackoverflow.com/questions/56584197/array-of-collections-in-vba-for-excel-macro
AW: warum verschwindet Collection aus Array?
24.07.2023 17:36:38
daniel
ich könnte mir schon was vorstellen.
beispielsweise wenn man in einer Userform viele Textboxen oder Labels hat, die man in Gruppen färben möchte, dann könnte man alle Labels, die zur gleichen Gruppe gehören, in eine Collection packen. Wenn man mehrere Gruppen hat, braucht man mehrere Collections. Wenn die Anzahl der Gruppen variabel sein soll dann könnte man das gut mit einem Array von Collections realisieren.
wenn man dann eine Schleife über alle Lables braucht, dann schachtelt man: äußere Schleife über das Array mit den Collections, innere Schleife über die Elemente der Collection.
Gruß Daniel
Anzeige
AW: warum verschwindet Collection aus Array?
24.07.2023 18:24:02
onur
In diesem Falle würde ich aber einfach ein 2-dimensionales Array nehmen.
Gruß
Onur
AW: warum verschwindet Collection aus Array?
24.07.2023 18:32:54
daniel
Bei Arrays ist es aufwendig, Elemente hinzuzufügen oder zu löschen.
zweidimensionale Arrays sind auch nur in einer Dimension variabel und in der anderen fix.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige