neue Ideen, neue Probleme. Nach vielen erfolgreichen Umsetzungen Listboxen zu kombinieren, Inhalte zunummerieren etc., a) nun möchte ich "einfach" den Inhalt einer Listbox komplett in eine andere Listbox (auf einer anderen Page einer Multipage) übertragen. Habe viele gefundene Ansätze aus dem umfangreichen Intranet versucht umzusetzen, bisher erfolglos. Eine Beispieldatei habe ich angehängt. Der Problemfall ist in der Datei unter "Auswahluebertragen2" zu finden.
b) danach würde ich gerne wissen, ob ich den Inhalt aus einer Listbox (zweispaltig) in EINE Tabellenzelle schreiben kann und anschließend wieder als Listbox darstellen kann. Hintergrund, das Formular ist mittlerweile so umfangreich, dass es Sinn macht, es (in einer Tabelle) zwischenzuspeichern oder wieder neu aufzurufen zu können. Mit den ganzen Textfeldern, Checkboxen, Optionsfeldern klappt es wunderbar, nur bei den Listboxen, fehlt mir noch ein Ansatz. Sollte durch ein eingefügtes Trennungszeichen (z.B. ;) doch irgendwie möglich sein, oder?
b) wenn es temporär ist warum dann in eine Zelle? So viel platz wie auf einem Blatt ist bekommst Du sicher nicht in eine Listbox ... Und unnötiger Programmieraufwand ...
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28 • soldblub
Hintergrund, ist das mehrere Nutzer das Formular nutzen, und die fast 100 Punkte (Textfelder, Checkboxen, etc. und 8 Seiten A4) nicht immer in einem Ausfüllen können. Wenn sich dann Fehler eingeschlichen haben, wäre es super, das alte Formular nur aufzurufen, Fehler oder Änderungen beheben bzw. durchführen zu können. Theoretisch wie eine kleine Datenbank, wobei ich die gemachten Eintgaben immer in die letzte freie Zeile eines Arbeitsblattes schreibe und in A1 einen selbst generierten PIN hinzufügt habe, mit der sich das Formular wieder aufrufen lässt.
Wie gesagt, nun muss ich noch die ausgewählten Einträge einer Listbox die ich z.B. hierdurch
Dim ZeileMax As Long Dim Zeile As Long Dim i As Long Dim txt As String
'Ermittlung der letzten verwendeten Zeile ZeileMax = .UsedRange.Rows.Count Zeile = ZeileMax + 1
For i = 0 To List_RG.ListCount - 1 If List_RG.Selected(i) Then txt = txt & "; " & vbCrLf & List_RG.List(i) Next Tabelle10.Range("B" & Zeile).Value = Mid(txt, 2)
in eine Zelle schreibe, wieder in eine Listbox einfügen???
nochmal: b) wenn es temporär ist warum dann in eine Zelle? So viel platz wie auf einem Blatt ist bekommst Du sicher nicht in eine Listbox ... Und unnötiger Programmieraufwand ...
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
10.08.2022, 10:50 (Dieser Beitrag wurde zuletzt bearbeitet: 10.08.2022, 10:51 von soldblub.)
Hallo,
hier nochmal zur Verdeutlichung eine überarbeitete Beispieldatei.
Die Anwendung dient der Erleichterung des Ausfüllen eines mehrseitigen Formulars. Da gleichzeitig mehrere Anwender des Formular nutzen, muss jeder in der Lage sein, den aktuellen Bearbeitungszustand seines eigenen Formulars aus einer Datenbank wieder aufzurufen. Daher benötige ich eine Funktion um Inhalte aus Listboxen (zweispaltig) in Zellen zwischenzulagern (speichern) und wieder in Listboxen zu füllen und in eine Listbox eauf einer anderen Multipage zu übertragen.
10.08.2022, 12:03 (Dieser Beitrag wurde zuletzt bearbeitet: 10.08.2022, 12:04 von Egon12.)
Hallo,
mach es so:
Code:
Private Sub CommandButton4_Click() 'Schritt 3 aus Tabelle in Listbox7 einfügen Dim varZelle$, iZeichen As Long, i As Long, arrEinzel, arrList() varZelle = Tabelle1.Cells(3, 5) iZeichen = Len(varZelle) arrEinzel = Split(Mid(varZelle, 2, 500), vbCrLf) ReDim arrList(0 To UBound(arrEinzel), 0 To 1) For i = 0 To UBound(arrList) arrList(i, 0) = Left(arrEinzel(i), 1) arrList(i, 1) = Mid(arrEinzel(i), 3, 100) Next i With ListBox8 .List = arrList End With End Sub
erstmal vielen Dank. Er übernimmt die Daten der ersten Spalte, also die Ziffern. Leider verstehe ich den Code nicht gut genug, um den Fehler zu entdecken. Wäre super, wenn du mir einiges erklären könntest.
Wofür steht z.B: das $ hinter varZelle? Kenne es nur aus der normalen Exceltabelle zum Festlegen von fixen Spalten/Zeilen in Formeln. warum wird iZeichen= Len(varZelle) benötigt? Es werden hier doch "nur" die Anzahl der Zeichenfolge gezählt? wird diese Information weiterverarbeitet??? Im Lokalfenster wird mir angezeigt, dass iZeichen 0 (Long) ist.
Kenne die Kombi von Split und Mid auch leider nicht.
iZeichen hatte ich vergessen rauszunehmen - stammte vom ersten Gedankengang.
arrEinzel = Split(Mid(varZelle, 2, 500), vbCrLf) Split trennt am Zeilenumbruch. In diesem Fall ab dem 2. Zeichen bis Zeichen 500 Damit kann der Zelleninhalt wieder in brauchbare Zeilen zurückgeschraubt werden.
arrList(i, 0) = Left(arrEinzel(i), 1) arrList(i, 1) = Mid(arrEinzel(i), 3, 100) verteilt die Zeile(n) aus arrEinzel in 2 Spalten der arrList
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Egon12 für diesen Beitrag:1 Nutzer sagt Danke an Egon12 für diesen Beitrag 28 • soldblub