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

objdic?

objdic?
Tanja
Hallo Excel-Gemeinde,
was bedeutet objdic?
Ich habe hier ein Makro gefunden, dass ich ganz gut gebrauchen könnte. Nun möchte ich es aber gerne - für mich - nachvollziehen können.
Benutzt wird dieses objdic bei der Angabe einer ausgabetabelle.
Könnte mir das vielleicht kurz jemand erläutern?
Grüße
Tanja

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
zeige den Code...
11.12.2009 10:07:05
Tino
Hallo,
objdic ist sehr wahrscheinlich eine Objekt Variable,
aber ohne den Code zu sehen kann man nichts dazu sagen.
Gruß Tino
AW: Hier ist der Code
11.12.2009 10:24:14
Tino
Hallo,
mit dem Scripting.Dictionary Objekt wird in diesem Code eine Liste ohne Duplikate erstellt.
Hier mal ein Link mit Lesestoff fürs Dictionary Objekt.
http://www.html-world.de/program/fso_12.php
Gruß Tino
Anzeige
AW: objdic?
11.12.2009 10:15:38
Beverly
Hi Tina,
ich nehme an, damit ist ein Dictionary Object gemeint - es bietet die Möglichkeit, Daten paarweise komfortabel zu speichern, zu bearbeiten und wieder abzurufen. Du kannst es dir in etwa so vorstellen wie ein Array.


AW: objdic?
11.12.2009 10:21:31
Tanja
Hallo Beverly,
kann man an dieser Stelle ein Dictionary Objekt umgehen? Wenn ja, wie?
VG
Tanja
AW: objdic?
11.12.2009 10:29:47
Beverly
Hi Tanja,
warum willst du es denn umgehen - es ist eine sehr schnelle Möglichkeit, doppelte Einträge zu eliminieren. Was willst du denn überhaupt machen?


Anzeige
AW: objdic?
11.12.2009 11:39:29
Tanja
Hi Beverly,
eigentlich habe ich fast genau das gleiche Problem wie der Fragensteller im kopierten Thread.
Allerdings möchte ich irgendwie nachvollziehen können, was da genau passiert. Und damit ich das irgendwie schaffe, wollte ich gerne dieses Objekt umgehen, weil ich davon noch nie gehört habe und es auch ehrlich gesagt nicht verstehe.
LG
Tanja
Dictionary-Object oder Collection
11.12.2009 12:21:56
NoNet
Hallo Tanja,
Du könntest das Dictionary-Object "umgehen", indem Du eine Collection verwendest - siehe Beispiel hier :
https://www.herber.de/forum/archiv/1120to1124/t1122763.htm#1122772
Allerdings hast Du damit wohl weder etwas "gewonnen" noch "verloren" - es ist einfach nur eine andere Methode.
Allgemein formuliert könnte man diese beiden Objekte etwa so beschreiben :
Beide Objekte (Dictionary oder Collection) können Daten ähnlich wie ein ARRAY (das hat Beverly bereits erwähnt) speichern. Zu jedem Datensatz gibt es einen eindeutigen Schlüssel (Key, Index).
Über diesen Schlüssel wird ein Datensatz im Dictionary/Collection eindeutig identifiziert - das ist ähnlich wie eine eindeutige Nr. im Personalausweis oder Kundennr. in einem Vertrieb etc.
Der Code "klappert" nun alle Zeilen/Zellen einer Liste ab und versucht diese im Dic./Coll. zu speichern und vergibt als Schüssel den Inhalt/Wert der Zelle. Wenn der Wert noch nicht im Dic./Coll. vorhanden ist, klappt das auch problemlos, der Datensatz wird mit dem Schlüssel aufgenommen.
Wenn nun in der Liste doppelte Inhalte vorkommen, versucht der Code einen bereits vorhandenen Schlüssel erneut zu vergeben - und das ist nicht möglich : Daher wird der bereits vorhandene Datensatz nicht noch einmal gespeichert. Diese Schleife wiederholt sich bis zum Ende der Liste.
Als Resultat erhält man ein Dic./Coll.-Objekt, dass alle Daten ohne Redundanzen (also ohne doppelte Werte) enthält. Die doppelten/mehrfach enthaltenen Werte sind nun alle nur einmal im Dic./Coll. gespeichert.
Diese Methode ist gerade bei großen Listen wesentlich schneller als wenn man alle bereits gespeicherten Werte in einer zweiten Schleife erneut überprüfen würde.
Mein Rat : lehne dieses für Dich "NEUE OBJECT" nicht ab, sondern mache es dir zueigen indem du es verwendest und damit in Deinen Wissensschatz mit aufnimmst - "und wieder was gelernt..." ;-)
Gruß, NoNet
PS: EINE recht schnelle Möglichkeit kann ich noch dir zuguterletzt doch noch anbieten, um Dic./Coll. zu umgehen : Prüfung direkt in ARRAY-Variable ohne Schlüssel :
Private Sub UserForm_Activate()
Dim objARR()
Dim lngZ As Long
On Error Resume Next
ComboBox1.Clear 'Alte Inhalte löschen
ReDim objARR(0) 'ARRAY auf 0 Elemente vordefinieren
'Werte der Spalte A bis letzte gefüllte Zeile
For lngZ = 1 To Cells(Rows.Count, 1).End(xlUp).Row
'Prüfen mit VERGLEICH, ob Monats-Wert bereits in objARR enthalten ist :
If IsError(Application.Match(Format(Cells(lngZ, 1), "MMM YYYY"), objARR, 0)) Then
objARR(UBound(objARR)) = Format(Cells(lngZ, 1), "MMM YYYY")
ReDim Preserve objARR(UBound(objARR) + 1)   'Array um 1 Element erweitern
End If
Next
If UBound(objARR) > 0 Then ReDim Preserve objARR(UBound(objARR) - 1)
For lngZ = LBound(objARR) To UBound(objARR)
ComboBox1.AddItem objARR(lngZ)
Next
End Sub

Anzeige
Vielen Dank...
11.12.2009 13:51:04
Tanja
... an euch beide.
Ich denke ich werde mich am Wochenende in Ruhe damit auseinandersetzen. Ist doch ein wenig viel, das hier noch nebenbei alles neu zu lernen. :)
Ich hoffe doch, dass ich bei Fragen erneut auf euch zukommen darf?
Ich wünsche euch jedenfalls schonmal ein wunderschönes Wochenende.
LG
Tanja
AW: objdic?
11.12.2009 13:10:54
Beverly
Hi Erika,
wenn ich das richtig verstanden habe, möchtest du aus einer Liste mit Mehrfacheinträgen eine Liste erzeugen, in der jeder Wert nur einmalig vorkommt? Dann könntest du vielleicht auch den Spezialfilter verwenden.


Anzeige
sorry, meinte natürlich: Tanja - o.T.
11.12.2009 13:12:20
Beverly
.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige