Listbox befüllen durch mehr Dim Array
#1
Hallo zusammen,

ich habe eine Klasse mit Namens "Classname"
Code:
Public Text1 as variant
Public Text2 as variant
Public Text3 as variant
Public Text4 as variant
Public MyArray (i,j,k,m,o) 'furchtbares 5 dim dynamisches Array
Public Test5 as Variant
Public Anfang1 as date
Public Anfang2 as Date
Public ende as Date
aus dem ganzen wird dann ein dickes Array gebaut mit ca. 300 Elementen...
Des weiteren gibt es ein...
Userform mit  einer Listbox... UF  und LB
ein kleines Array zum rumprobieren  AfL

Code:
Public Dickesarray as Classname
Public sub Main()
Dim UF as Userform1
Dim LB as Listbox1
Dim AfL as Variant

ReDim AfL(2)
AfL(0) = "test1"
AfL(1) = "test2"
AfL(2) = "text3"


Set UF = New Userform1
With UF   
    .Lb.List = Dickesarray   '<- AfL   funktioniert hier an dieser stelle

    UF_Project.Show
End With

Dickesarray befüllt wie es soll.
AfL ist auf ok.

Ich will die Listbox im Userform1 mit dem Inhalt des Dickes Array füllen und zwar nur mit den ersten 4 Elementen ("Text1, Text2, ...) der "Classname" aus jedem Element des Arrays.

Mit dem AfL funktioniert das gut. In der Listbox werden die einzelne Elemente des AfL-Arrays gelistet.

Wenn ich das "AfL" Array durch das "Dickesarray" ersetze bekomme ich die Fehlermeldung für die Listbox LB:



Ich kann natürlich aus dem "DickesArray" die entsprechenden Elemente rausholen und in ein neues Array (1 dim ) stricken. Das will ich aber eigentlich vermeiden da ich mit dem Userform natürlich das "Dickesarray" manipulieren möchte und ich dann irgend einen tolle Referenzierung zwischen den beiden Arrays brauche die ich garantiert verbocke.

Gibt es da einen eleganteren Weg?

Grüße,
Dude

(Das Orginalfile kann ich natürlich wieder nicht schicken... Interna...)
Antworten Top
#2
Hallöchen,

Zitat:Ich kann natürlich aus dem "DickesArray" die entsprechenden Elemente rausholen und in ein neues Array (1 dim ) stricken. Das will ich aber eigentlich vermeiden

z.B.

1)
Dann fülle die Listbox mit den Elementen statt über den Umweg eines Arrays. Smile

2)
Fülle dick und dünn gleichzeitig
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Moin,

ich würde auch einfach ein gewöhnliches zweidimensionales Array parallel füllen. Aber mal was anderes, das ist der erste Anwendungsfall eines mehr als dreidimensionalen Arrays, den ich in freier Wildbahn sehe. Bisher ist mir im Leben auch noch kein praxisrelevanter Anwendungsfall eingefallen. Kannst du kurz erläutern, welche Informationen du so tief verschachtelt speichern musst?

Und wie fühlst du das Array? Du musst ja keine produktive Datei bereitstellen, aber vorstellen würd ich's mir trotzdem gern...

Viele Grüße
derHöpp
Antworten Top
#4
Hallo, 

Das Dicke Array wird durch mehrere Tabellen gefüllt. (Siehe mein meine vorherige Frage https://www.clever-excel-forum.de/Thread...on=newpost ). Generell will ich nicht in Tabellen mit meinem VBA Code arbeiten sondern über ein UF in dem dicken Array, da dass alles am Ende ziemlich groß wird und in einem Array  die Berechnungszeiten wesentlich kürzer sind. 

Das kleinere Array in meiner Klasse kann man sich in etwa so Vorstellen: |Produkt|Niederlassung|Komponente|Bauteil|Kerle die wann, was zusammenschrauben|
Das kleinere Array in meiner Klasse kann ich eh so nicht umsetzen, da ich bei mehrdimensionalen Arrays das Redim Preserve nicht mehr benutzen kann und ich nicht die endgültige größe aller Dimensionen im Voraus weis. Das ist aber ein anderes Problem.

Gruß, Dude
Antworten Top
#5
Hallo Dude,

ich kenne dicke Männer und kleine Frauen, aber was muss ich mir unter einem "dicken Array" oder einem "kleinen Array" vorstellen?
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#6
Moin,

Zitat:Produkt|Niederlassung|Komponente|Bauteil|Kerle die wann, was zusammenschrauben
Das sieht für mich ziemlich zweidimensional aus. Nur, weil eine Tabelle mehr als zwei Spalten hat, benötigt sie im regelfalls nicht auch mehr als zwei Dimensionen...

Aber mir war dein erstes Beispiel schon zu abstrakt, vielleicht verstehe ich das auch nur falsch.

Viele Grüße
derHoepp
[-] Folgende(r) 1 Nutzer sagt Danke an derHoepp für diesen Beitrag:
  • snb
Antworten Top
#7
Hallo,

|Länge|Breite|Höhe| sieht auch zweidimensional aus... Kann man aber auch gut dreidimensional interpretieren. Stell Dir vor ich will viele Kisten mit unterschiedlichen Längen, Breiten und Höhen an verschiedenen Niederlassungen von verschiedenen Leuchten zusammenbauen.  Aber meine Frage bezieht sich auch garnicht auf mein kleines Array in der Klasse sondern wie ich ohne das Array AfL (siehe Code) meine einzelnen Elemente der Klasse in die Listbox reinkriege.

Gruß,
Dude
Antworten Top
#8
Hallo Dude,

wie wäre es, wenn du anstelle des Quelltextes deine Datei einstellen würdest? Dann kann man sehen, was möglich ist.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#9
Tongue 
Schau mal 16

Wie ein '3D Listbox' aussieht.


Angehängte Dateien
.xlsb   __3D_Listbox.xlsb (Größe: 21,3 KB / Downloads: 11)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#10
Moin,

das dreidimensionale Modell zu deinem Beispiel würde bedeuten, dass du nicht mehrere Kisten mit Höhe, Breite und Tiefe speichern willst, sondern in jedem Kubikzentimeter einer jeden Kiste ein anderes Objekt. Und für gewöhnlich wäre es auch da effizienter dir zu jedem Objekt die Koordinaten zu merken, statt ein Dreidimensionales-Mutterobjekt zu speichern.

Viele Grüße 
derHöpp
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste