Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1844to1848
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

Array in Dictionary erstellen

Array in Dictionary erstellen
21.08.2021 21:29:34
SchubertFranzl
Hallo
ich würde gerne ein Array direkt in ein Dictionary eintragen, dieses direkt befüllen und direkt abfragen, was mir aber nicht gelingt.
Es soll so gehen, wie man auch ein Dictionary direkt eintragen kann.
Damit man besser versteht, was ich meine:
Hier ein Beispiel, in dem gezeigt wird, wie es mit einem Dictionary geht und dann gezeigt wird, dass es mit einm Array nicht geht.

Sub Beispiel()
Dim Verzeichnis As Object
Dim Raster As Variant
ReDim Raster(8 To 100, 1 To 20)
Set Verzeichnis = CreateObject("Scripting.Dictionary")
'Im Verzeichnis wird ein Dictionary erstellt
Verzeichnis.Add "Montag", CreateObject("Scripting.Dictionary")  'Key:="Montag",  Item:=Neues Dictionary
'In diesem wird ein Eintrag hinzugefügt und dann abgerufen.
Verzeichnis("Montag").Add "Umsatz", "Erdbeere"  'Key:="Umsatz",  Item:="Erdbeere"
Debug.Print Verzeichnis("Montag")("Umsatz")  'liefert "Erdbeere"
With Verzeichnis("Montag")
Debug.Print .Item("Umsatz")               'liefert "Erdbeere"
End With
'Im Verzeichnis soll ein leeres Array erstellt werden, weiß aber nicht, wie.
'Habe deshalb ein bestehendes Array eingefügt,
Verzeichnis.Add "Tabelle", Raster
'In dieses Array soll etwas eingetragen werden
Verzeichnis("Tabelle")(50, 15) = "Rosine"
'Der Abruf liefert nicht das gewünschte Ergebnis
Debug.Print Verzeichnis("Tabelle")(50, 15)   'liefert nix
With Verzeichnis("Tabelle")
Debug.Print .Item(50, 15)        'liefert einen Fehler
End With
End Sub
Könnt Ihr mir helfen und sagen, warum das nicht geht und wie es ginge?
LG, Franz

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Lade die Scripting.Runtime, ...
22.08.2021 01:29:08
Luc:-?
…Franz,
dann unterstützt der VBE-Intellisense deine Bemühungen! Prinzipiell lassen sich auch ganze Arrays unter einem Key als Item hinzufügen, auf gleiche Weise wie Einzelwerte. Aber wenn das hier nicht der Fall ist, hast du es falsch gemacht (dein EingabeVersuch ist mir suspekt und entspricht nicht der Norm). Ohnehin empfehle ich hier eher Tensoren als klassische mehrdimensionale VBA-Arrays.
Morhn, Luc :-?
AW: Array in Dictionary erstellen
22.08.2021 14:51:50
Zwenn
Hallo Franz,
mir ist nicht ganz klar, warum Du unbedingt ein Array verwenden willst, wenn Du es mit einem Dictionary schon hinbekommst. Nutze doch für ein Dict in Dict einfach Keys ab 0 und dann hochzählen. Das ist dann (ähnlich) wie ein Array, nur unkompliziert dynamisch. Solange diese Art der dynamischen Speicherstruktur nicht exorbitant viele Einträge erhält (im Mio. Bereich), funktioniert das auch von der Geschwindigkeit her gut.
Sollen es unbedingt die Arrays sein, dann hilft Dir vielleicht dieser Thread weiter. Ist zwar schon älter, aber das sollte egal sein. Daniel erklärt da Eingangs einiges und später führt Trägheit weiteres aus:
http://www.office-loesung.de/ftopic606131_0_0_asc.php
Viele Grüße,
Zwenn
Anzeige
AW: Array in Dictionary erstellen
22.08.2021 20:15:18
SchubertFranzl
Offensichtlich muss man das Array herausziehen, damit man was eintragen kann. Und dann wieder zurückstellen.
Warum Arrays? Weil ich die schnell in ein Range in einem Sheet kopieren kann. Erst sammelt das Makro verschiedene Werte und trägt sie in Arrays ein. Die ca. 10000 Werte sind Strings und kommen aus einer Liste, die vom Anwender kunterbunt befüllt wurde. Die Einordnung in die Arrrays erfolgt im Makro daher stückweise.
Und wenn der User dann eine bestimmte Übersicht will, kann ich gleich das entsprechende Array reinstellen. Zugegeben, das Erstellen der Arrays dauert ein paar Sekunden, also eine Ewigkeit.
Eine andere Möglichkeit, die ich noch nicht ausprobiert habe, wäre vielleicht, Zeilendictionaries in Spaltendictionaries zu erstellen, die jeweils durchnummerierte Keys haben, und diese dann stückweise zu befüllen, so wie Du es bereits angeregt hast. Nur: Wie bringe ich die dann in das Sheet? Gibt es da eine schnelle Möglichkeit?
LG, Franz
Anzeige

47 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige