Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1912to1916
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
Listboxeinträge beim Schließen speichern
02.01.2023 08:28:18
Marcus
Guten Morgen zusammen,
ich wünsche euch ein frohes neues Jahr.
Ich habe eine Listbox wo man mehrere Daten auswählen und in ein Tabellenblatt einfügen kann. Man kann auch den Text den man auswählen kann, verändern und bleibt verändert in der Listbox. Wenn ich jetzt aber z.B. die Excel speichere, schließe und wieder öffne, bleibe die ausgewählten Einträge zwar in dem Tabellenblatt vorhanden, aber wenn ich die Listbox öffne, sind die Einträge nicht mehr ausgewählt und der geänderte Text ist nicht mehr in der Listbox vorhanden. Könnt ihr mir sagen, wie ich schaffe das diese Einträge in der Listbox gespeichert werden (Excel Datei im Anhang)? https://www.herber.de/bbs/user/157028.xlsm
Vielen Dank und viele Grüße Marcus

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listboxeinträge beim Schließen speichern
02.01.2023 10:20:43
onur
" Könnt ihr mir sagen, wie ich schaffe das diese Einträge in der Listbox gespeichert werden " Überhasupt nicht, denn eine Listbox ist keine Festplatte, sondern nur ein Hilfsmittel, um irgendwas auszuwählen, um dann mit der Auswahl etwas zu machen, wie z.B. die Auswahl auf einem Blatt zu speichern. Deine Tastatur speichert ja auch nicht sämtliche deiner Eingaben, das macht höchstens eine Anwendung wie z.B. Word, Excel usw usw.
AW: Listboxeinträge beim Schließen speichern
02.01.2023 10:44:22
Beverly
Hi Markus,
versehe ich das richtig, dass immer nur in C2 etwas eingetragen wird? Wenn das der Fall ist, dann ergänze den Code im UserForm durch folgenden:

Private Sub UserForm_Activate()
Dim lngEintrag As Long
Dim arrDaten
arrDaten = Split(Range("C2"), ", ")
For lngEintrag = 0 To ListBox1.ListCount - 1
If Not IsError(Application.Match(ListBox1.List(lngEintrag, 1), arrDaten, 1)) Then _
ListBox1.Selected(lngEintrag - 1) = True
Next lngEintrag
End Sub
Bis später
Karin

Anzeige
AW: Listboxeinträge beim Schließen speichern
03.01.2023 08:46:13
Marcus
Vielen Dank, das funktioniert leider nicht so richtig. Mir ist es eigentlich egal wo die ausgewählten Daten gespeichertwerden, ob auf einem anderen Tabellenblatt oder sonst wo. Mir ist nur wichtig, dass die Daten die ich ausgewählt habe, ich Excel schließe, neu öffne und etwas ändern möchte, dass die Texte die ich ausgewählt und verändert habe und die Listbox öffne, erhalten und markiert bleiben. Wenn ich einen Punkt abwählen oder hinzufügen möchte, dass nicht alles was vorher da war, weg ist.
Vielen Dank für eure Unterstützung. Viele Grüße Marcus
AW: Listboxeinträge beim Schließen speichern
03.01.2023 10:29:34
Beverly
Was verstehst du unter "funktioniert nicht so richtig"? Außerdem sind deine Erläuterungen sehr nebulös. Was meinst du mit "die Texte die ich ausgewählt und verändert habe und die Listbox öffne, erhalten und markiert bleiben" - der gepostete Code markiert doch beim Öffnen der Mappe und Start des UserForms in der ListBox alle in Zelle C2 eingetragenen Daten.
Bis später
Karin

Anzeige
AW: Listboxeinträge beim Schließen speichern
03.01.2023 10:38:05
Marcus
Wenn ich alles ausgewählt und in der Userform auf Übernehmen klicke, sind diese in der Zelle eingetragen. Speichere ich das Dokument, schließe Excel und öffne Excel erneut, sind die Daten wie gehabt in der Zelle. Öffne ich aber die Userform, sind die Daten nicht mehr ausgewählt und der geänderte Text gelöscht.
AW: Listboxeinträge beim Schließen speichern
03.01.2023 17:49:44
Beverly
Du musst natürlich die Ergänzungen, die du in der ListBox machst, auch in deine Ausgangstabelle eintragen - andernfalls können sie nicht gefunden werden. Ich habe das mal so angenommen und im Code ergänzt.
Oder sollen sie nur in der Zelle stehen und nicht in der Ausgangstabelle ergänzt werden? Dann müsste der Code dahingehend geändert werden, dass die ListBox beim Start durch die nicht in der Ausgangstabelle, aber in der Zelle vorhandenen Inhalte ergänzt wird.
Was das Ändern eines ListBox-Eintrages betrifft, habe ich mir deinen Code nicht angeschaut - aber darauf trifft das o.g. ebenfalls zu. Dazu ist außerdemnoch folgendes anzumerken: wenn die Änderung nicht auch in der Ausgangstabelle vorgenommen wird, dann gibt es keine Möglichkeit, diese Änderung nach dem Schließem der Mappe in der ListBox wiederherzustellen, es sei denn, du speicherst irgendwo im Tabellenblatt den Inhalt (und damit auch die Änderung) der ListBox ab. Das macht aber aus meiner Sicht wenig Sinn, denn wozu braucht man eine Änderung in der ListBox, wenn sie nicht auch in der Ausgangstabelle gespeichert wird.
Ich würde die Begriffe in der Ausgangstabelle ohne "." am Ende schreiben und den "." einfach als Trenner beim Eintragen in die Zelle verwenden - das macht es wesentlich einfacher beim Zurücklesen nach dem Öffnen der Mappe, da sich die Begriffe einfach durch Split trennen lassen und somit unkompliziert als markiert in der ListBox angezeigt werden können.
Noch ein Hinweis: du solltest beim Ergänzen der ListBox noch prüfen, ob die TextBox leer ist, denn andernfalls werden leeren Einträge erstellt, was ja wenig sinnvoll ist.
https://www.herber.de/bbs/user/157070.xlsm
Bis später
Karin

Anzeige
AW: Listboxeinträge beim Schließen speichern
04.01.2023 10:04:09
Marcus
Guten Morgen Karin,
vielen vielen lieben Dank, genau so sollte es sein. Tausend Dank für deine Unterstützung.
Viele Grüße Marcus
AW: Listboxeinträge beim Schließen speichern
04.01.2023 10:15:42
Marcus
Mir ist gerade aufgefallen, wenn ich alle Einträge weghacke in der Listbox und "Übernehmen" klicke, sind die Einträge auch aus der der Zelle (Perfekt). Wenn ich die Userform wieder öffne, kommt dieser Fehler (https://www.herber.de/bbs/user/157075.png).
Kannst du mir nochmal weiterhelfen? Vielen Dank.
AW: Listboxeinträge beim Schließen speichern
04.01.2023 13:10:14
Beverly
Ursache für den Fehler ist, dass bei einer leeren Zelle die Variable arrDaten ebenfalls leer ist und die Match-Funktion nicht ausgeführt werden kann. Du musst beim Öffnen also noch prüfen, ob C2 nicht leer ist.
Bis später
Karin

Anzeige
AW: Listboxeinträge beim Schließen speichern
04.01.2023 14:07:07
Marcus
Könntest du mir bitte dabei helfen? Vielen Dank.
AW: Listboxeinträge beim Schließen speichern
05.01.2023 10:05:10
Beverly

Private Sub UserForm_Activate()
Dim lngEintrag As Long
Dim arrDaten
If Range("C2")  "" Then
arrDaten = Split(Range("C2"), ". ")
For lngEintrag = 0 To ListBox1.ListCount - 1
If Not IsError(Application.Match(ListBox1.List(lngEintrag, 1), arrDaten, 0)) Then _
ListBox1.Selected(lngEintrag) = True
Next lngEintrag
End If
End Sub
Bis später
Karin

AW: Listboxeinträge beim Schließen speichern
05.01.2023 10:24:15
Marcus
Guten Morgen Karin,
vielen Dank für deine Hilfe. Bei dem Einfügen diesen Codes ist mir aufgefallen, dass die Texte jetzt nicht mehr mit einem ". " getrennt werden und wenn ich die Stammdaten ändere, werden beim Öffnen der Userform die geänderten Texte nicht angezeigt, sondern es werden nur die alten Texte angezeigt.
Weißt du woran das liegen kann?
Vielen Dank und viele Grüße Marcus
Anzeige
AW: Listboxeinträge beim Schließen speichern
05.01.2023 14:02:57
Beverly
Hi Marcus,
der Code aus meinem vorhergehenden Beitrag hat nur mit dem Zurücklesen aus Zelle C2 etwas zu tun, nicht damit, was in die Zelle eingetragen wird - das macht der Code der hinter dem CommandButton "Übernehmen" liegt, also der folgende und zwar ganz konkret an der markierten Stelle:

Private Sub btnTabellenblatt_Click()
Dim i&, Daten$
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then Daten = Daten & ". " & ListBox1.List(i, 1)  '
Bis später
Karin

Anzeige
AW: Listboxeinträge beim Schließen speichern
05.01.2023 14:30:30
Marcus
Hallo Karin,
vielen lieben Dank für deine Unterstützung.
Viele Grüße Marcus
AW: Listboxeinträge beim Schließen speichern
04.01.2023 16:41:38
Piet
Hallo
ohne den ganzen Thread gelesen zu haben kannst du bei Karin in dieser Stelle die İf Abfrage ausführen
iIf Range("C2").Value = "" Then MsgBox "Zelle C2 ist leer - Abbruch!": Exit Sub
arrDaten = Split(Range("C2"), ", ")
mfg Piet
AW: Listboxeinträge beim Schließen speichern
05.01.2023 09:21:54
Marcus
Guten Morgen Piet,
vielen Dank für deine Antwort. Wenn ich den Code einfüge, setzt das den Code vorher außer Kraft (If Not IsError(Application.Match(ListBox1.List(lngEintrag, 1), arrDaten, 1)) Then _ ListBox1.Selected(lngEintrag - 1) = True). Ist es möglich den Code auch so zu gestalten, dass Excel nur überprüft, ob die Zelle leer ist und die Userform öffnet, ohne MsgBox?
Vielen Dank und viele Grüße Marcus
Anzeige

113 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige