Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1680to1684
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

Type - Geschichten

Type - Geschichten
13.03.2019 20:25:32
Tobias
Hallo ihr Lieben,
vielleicht erinnert sich der eine oder andere an mein Slitherlink-Problem (bei dem ich jetzt wesentlich weiter bin).
Nun bin ich an dem Punkt, an dem reine Logiken in erster Instanz nicht mehr weiter helfen. Sprich: ich muss jetzt Richtung "Brute Force" gehen.
Bisher ist folgendes: Ich habe alles, was ich in Excel dazu benötige in 4 Types geschrieben (einzelne Variablen helfen nicht mehr). Das funktioniert auch alles sehr gut.
Nun ist mein Gedanke folgender: Wenn ich an eine Situation komme, wo ich eben einfach mal eine Linie prüfen will (für die Nicht-Wisser: ähnlich wie ich in Sudoku in einem Feld mal einfach eine Zahl rein schreibe und dann später schaue, ob sich das irgendwo beißt) möchte ich den Inhalt der Types kopieren in "tmp"-Types.
Insoweit klappt auch das, dass der komplette Wissensinhalt da im neuen tmpTyp ist.
tmpFeld = Feld 'So heißen die Beiden Typen im Beispiel
Dazu muss ich aber vorher tmpFeld im Programm "anlegen" über "Public tmpFeld() As T_Feld". Auch soweit gut.
Nun ist aber meine Frage - was, wenn sich das weiter verzweigen sollte und ich noch mehr "tmptmp..."-Felder haben will? Ich kann doch schlecht x-beliebige Typen anlegen, die ich evtl mal gebrauchen könnte.
Geht das nicht auch irgendwie dynamisch anders?
Ich hoffe, ihr versteht ein wenig um was es mir geht. Weiß es nicht besser zu beschreiben.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Type - Geschichten
14.03.2019 09:12:10
Matthias
MOin!
Weiß nicht genau was du da machst und ob dir das hilft aber du könntest deine tmpFelder doch in eine Collection packen. Die nimmt eigentlich alle Typen / Objecte auf. Wenn du dann ein neues tmpFeld brauchst, erstellt du dynamisch ein neues Feld und fügst es der Collection zu.
Hier mal eine Erklärung:
https://excelmacromastery.com/excel-vba-collections/
VG
AW: Type - Geschichten
14.03.2019 16:08:45
Tobias
Hallo,
leider hilft mir dein Gedankengang nicht so wirklich weiter.
Kennst du dich mit "Type" aus? Das ist bereits eine Collection.
Mit
Type T_Feld()
Nr As Integer
Zahl As Integer
Linie(1 To 4) As Integer
.... 'usw
End Type
lege ich das Feld erst mal als Muster an.
Mit
Public Feld As T_Feld
erzeuge ich erst mal tatsächlich das Feld und mit
ReDim Feld(25)
Lege ich fest, wie viele Werte ich unter "Feld" haben möchte. MIt
Feld(2).Nr = 2 kann ich dann einen Wert festlegen oder mit
aktLinie = Feld(5).Linie(3) kann ich einen Wert auslesen.
Wenn ich später mal eine Kopie von "Feld" benötige, muss ich einen zweiten Bezeichner für T_Feld anlegen z. B. mit "Public tmpFeld As T_Feld"
Dann kann ich im Hauptprogramm über
tmpFeld = Feld
alle Werte übertragen und könnte jetzt auch über "Nr = tmpfeld(2).Nr" die "2" aus dem obigen Code auslesen.
Nun kann es aber sein, dass ich nicht nur einmal das "Feld" kopieren muss sondern mehrfach. Dann müsste ich aber für jedes weitere Feld ebenso erstmal alles festlegen mit "Public tmpFeld1 As T_Feld" etc.
Und da war meine Frage und überlegung, ob man das nicht irgendwie dynamischer hin bekommen kann - brauche ich ein neues Feld, erzeuge ich ein leeres und fülle es mit "Feld" dann eben, wie oben beschrieben bei tmpFeld.
Ich weiß, es ist nicht einfach zu erklären.
Anzeige
AW: Type - Geschichten
14.03.2019 16:08:47
Tobias
Hallo,
leider hilft mir dein Gedankengang nicht so wirklich weiter.
Kennst du dich mit "Type" aus? Das ist bereits eine Collection.
Mit
Type T_Feld()
Nr As Integer
Zahl As Integer
Linie(1 To 4) As Integer
.... 'usw
End Type
lege ich das Feld erst mal als Muster an.
Mit
Public Feld As T_Feld
erzeuge ich erst mal tatsächlich das Feld und mit
ReDim Feld(25)
Lege ich fest, wie viele Werte ich unter "Feld" haben möchte. MIt
Feld(2).Nr = 2 kann ich dann einen Wert festlegen oder mit
aktLinie = Feld(5).Linie(3) kann ich einen Wert auslesen.
Wenn ich später mal eine Kopie von "Feld" benötige, muss ich einen zweiten Bezeichner für T_Feld anlegen z. B. mit "Public tmpFeld As T_Feld"
Dann kann ich im Hauptprogramm über
tmpFeld = Feld
alle Werte übertragen und könnte jetzt auch über "Nr = tmpfeld(2).Nr" die "2" aus dem obigen Code auslesen.
Nun kann es aber sein, dass ich nicht nur einmal das "Feld" kopieren muss sondern mehrfach. Dann müsste ich aber für jedes weitere Feld ebenso erstmal alles festlegen mit "Public tmpFeld1 As T_Feld" etc.
Und da war meine Frage und überlegung, ob man das nicht irgendwie dynamischer hin bekommen kann - brauche ich ein neues Feld, erzeuge ich ein leeres und fülle es mit "Feld" dann eben, wie oben beschrieben bei tmpFeld.
Ich weiß, es ist nicht einfach zu erklären.
Anzeige
AW: Type - Geschichten
14.03.2019 22:25:00
Matthias
Moin!
Gut Types kann man wohl nicht an eine Col. zuweisen. Hatte ich bisher aber auch noch nicht probiert. Du könntest es aber so wie hier machen. Dabei dein Type als KLasse umwandeln und den dann an eine collection zuweisen. Die wäre dann dynamisch und du bräuchtest nicht jedesmal eine Variable haben - zumindest theroretisch (habe grad keine Zeit das zu testen).
https://stackoverflow.com/questions/24954454/user-defined-types-in-arrays-collections-and-for-each-loops
VG
AW: Type - Geschichten
15.03.2019 11:19:07
Matthias
MOin!
Habe nochmal geschaut. Hier nochmal ein Link. M.E. bleibt es dabei, wenn du es dynamisch haben willst (zur Laufzeit beliebige Anzahl an Kopien erstellen) solltest du eine Collection zum Aufnehmen nutzen. Geht halt nicht mit type. Müsste da eine Klasse drauß machen. Ist im Link aber auch kurz erwähnt.
http://www.office-loesung.de/ftopic429248_0_0_asc.php
VG
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige