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
Inhaltsverzeichnis

Werte in Tabelle speichern

Werte in Tabelle speichern
10.01.2023 14:17:26
Marcus
Hallo zusammen,
ich habe 2 Userformen und Listboxen, die sich Daten aus je einer Stammdatentabelle ziehen. Wenn ich die "Userform1" öffne, zieht sich die Listbox die Daten aus der "Tabelle11" und speichert die Daten auch in der "Tabelle11", funktioniert einwandfrei. Wenn ich die "Userform2" öffne, zieht sich die Listbox die Daten aus der "Tabelle12", aber die Speicherung der Daten erfolgt in der "Tabelle11" anstatt in "Tabelle12". Könnt ihr mir helfen und sagen was ich übersehe?
https://www.herber.de/bbs/user/157190.xlsm
Vielen Dank.
Gruß Marc

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte in Tabelle speichern
10.01.2023 14:28:18
ChrisL
Hi Marcus
With Tabelle2.ListObjects(1)
in 2 ändern
With Tabelle2.ListObjects(2)
cu
Chris
AW: Werte in Tabelle speichern
10.01.2023 14:45:27
Marcus
Super, vielen Dank. Kannst du mir noch bei einer Sache helfen?
Wenn Texte ausgewählt werden, werden diese mit einem ". " getrennt. Kann man das so programmieren, dass Excel das Ende aller ausgewählten Texte erkennt und als letztes dann noch einen "." setzt? Weil derzeit trennt Excel nur die Sätze von einander, erkennt aber das Ende nicht, sprich, nach der letzten Auswahl macht Excel kein "."
Gruß Marcus
AW: Werte in Tabelle speichern
10.01.2023 15:23:57
ChrisL
Hi
Ich hatte eine ähnliche Idee wie Daniel, wurde aber aufgehalten. Nebst den bereits gemachten Hinweisen müsstest du bei diesem Vorgehen mit Unload (anstelle Hide) arbeiten, so dass das UF beim nächsten Start frisch initialisiert wird.
Den Punkt kannst du einfach hinten mit & "." noch anfügen. Den ganzen Code habe ich nicht hinterfragt aber hier mal ein paar Anpassungen.
STANDARDMODUL

Public MyLO As ListObject
Tabelle1

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$D$2" Then
Set MyLO = Tabelle2.ListObjects("Tabelle11")
UserForm1.Show
End If
If Target.Address = "$D$3" Then
Set MyLO = Tabelle2.ListObjects("Tabelle12")
UserForm1.Show
End If
End Sub
Userform1

    Dim iZeile&, iFreigabe&
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)
Next
Sheets("Auswahl").Range("C2").Value = Mid(Daten, 3) & "."
Unload Me
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub CommandButton2_Click()
If MsgBox("Soll der Wert zusätzlich in die Listbox eingefügt werden", vbQuestion + vbYesNo, "Abfrage wie in Listbox übernehmen") = vbYes Then
WertHintenRan
Else
WertAendern
End If
End Sub
Private Sub WertAendern()
Dim arrList()
If iFreigabe = 1 Then
arrList = ListBox1.List
arrList(iZeile, 1) = TextBox1
ListBox1.List = arrList
iFreigabe = 0
Else
MsgBox "Erst zu ändernde Zeile mit Doppelklick auswählen", vbInformation
End If
End Sub
Private Sub WertHintenRan()
With ListBox1
.AddItem "1." & Mid(.List(.ListCount - 1, 0), 3, 4) + 1
.List(.ListCount - 1, 1) = TextBox1
End With
With MyLO
.ListRows.Add
.DataBodyRange.Columns(1).Cells(.DataBodyRange.Columns(1).Cells.Count) = ListBox1.List(ListBox1.ListCount - 1, 0)
.DataBodyRange.Columns(2).Cells(.DataBodyRange.Columns(1).Cells.Count) = ListBox1.List(ListBox1.ListCount - 1, 1)
End With
TextBox1 = ""
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
With ListBox1
TextBox1 = .List(.ListIndex, 1)
iZeile = .ListIndex
iFreigabe = 1
End With
End Sub
Private Sub UserForm_Initialize()
With ListBox1
.List = MyLO.DataBodyRange.Value
.ColumnWidths = "30;300"
End With
End Sub
cu
Chris
Anzeige
AW: Werte in Tabelle speichern
10.01.2023 14:56:27
Daniel
Hi
wenn du in beiden Fällen dieselbe Tabelle referenzierst, dann wird auch in beiden Fällen dieselbe Tabelle geändert.
lege dir einfach mal die beiden Codes von "Private Sub WertHintenRan()" für beide Userformen nebeneinander, dann solltest du sehen, dass du beim Kopieren des Codes vergessen hast, diesen Teil zu ändern (2. With-Klammer)
aber warum hast du hier 2 Userformen? Wenn beide bis auf die Liste und die Ausgabezelle identsich sind, müsste eine Userform reichen.
Erstelle hierzu ein allgemeines Modul und lege dort die beiden Variablen an:

Public TabFürListe
Public AusgabeZelle as range
diese beiden Variablen sind dann in allen Makros deines Projekts bekannt und können verwendet werden.
im Userform-Code ersetzt du dann
jedes Tabelle2.ListObjects(1) durch TabFürListe und
jedes Sheets("Auswahl").Range("C2") durch AusgabeZelle
und ergänzt das Activate-Event durch:

Listbox1.List = TabFürListe.DataBodyRange
im SelectionChange weist du dann die Variablen entsprechend zu.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$D$2" Then
Set TabFürListe = Tabelle2.ListObjects(1)
Set AusgabeZelle = Target.Offset(0, -1)
UserForm1.Show
End If
If Target.Address = "$D$3" Then
Set TabFürListe = Tabelle2.ListObjects(2)
Set AusgabeZelle = Target.Offset(0, -1)
UserForm1.Show
End If
End Sub
Damit reicht dir dann eine einzige Userform für beide (oder auch mehrere) Fälle.
damit vermeidest du dann auch, dass du bei Änderungen solche Fehler machst und einfach stellen übersiehst, die du anpassen musst.
Gruß Daniel
Anzeige
AW: Werte in Tabelle speichern
10.01.2023 15:15:49
Marcus
Hey Daniel,
das klingt doch mal nach einer sehr sehr guten Lösung. Beim Einfügen habe ich gerade irgendein Problem. Kannst du das in der Excel-Datei von mir ändern und hochladen? Vielen Dank.
Gruß Marcus
AW: Werte in Tabelle speichern
10.01.2023 15:20:07
Daniel
was hast du denn für ein Problem?
AW: Werte in Tabelle speichern
10.01.2023 15:20:59
Marcus
Bekomme das irgendwie nicht hin
AW: Werte in Tabelle speichern
10.01.2023 15:24:08
Daniel
Zeig mal deinen Umsetzungsversuch.
Gruß Daniel
AW: Werte in Tabelle speichern
10.01.2023 15:42:34
Daniel
naja, du hast da auch nicht alles umgesetzt, was ich dir geschrieben habe.
Lies meinen Beitrag nochmal, versuche das zu verstehen und ändere dann deinen Code entsprechend ab.
wobei ich eine kleine Korrektur hätte:
und ergänzt das Activate-Event durch:
Listbox1.List = TabFürListe.DataBodyRange

dieser Teil ist nicht richtig, das muss nicht in Activate-Event rein, sondern ins Initialize-Event, da hast du es aber eigentlich schon drin, es muss nur angepasst werden (die feste Tabellenzuordnung durch die Variable ersetzen)
Gruß Daniel
Anzeige
AW: Werte in Tabelle speichern
10.01.2023 15:54:22
Marcus
Jetzt bin ich total verwirrt.
AW: Werte in Tabelle speichern
10.01.2023 16:03:18
Daniel
also nochmal für Anfänger:
ersetze in den Makros der Userform jedes Tabelle2.ListObjects("Tabelle11") durch den Variablennamen TabFürListe
das erste ist die feste Angabe des zu verwendenden Zellbereichs, das zweite dann die Variable. Dieser Variable hast du im Selection-Change-Event schon den passenden Zellbereich zugewiesen.
Bei der Suche nach den entsprechenden Codestellen unterstützt dich der VBA-Editor mit der Menüfunktion Bearbeiten - Suchen oder Bearbeiten - Ersetzen
das gleiche machst du dann mit dem Verweis auf den Zellbereich C2 (Range("C2")) und der anderen Variable
Gruß Daniel
Anzeige
AW: Werte in Tabelle speichern
10.01.2023 16:15:00
Marcus
Die Userform hat jetzt die richtige Zuordnung. Wenn ich die jetzt öffnen und Texte auswähle, übernehme und die userform erneut öffne, sind die Texte nicht mehr markiert.
https://www.herber.de/bbs/user/157193.xlsm
Gruß Marcus
AW: Werte in Tabelle speichern
10.01.2023 16:30:54
Daniel
weil du meine Anweisungen noch nicht vollständig durchgeführt hast.
hast noch nicht alle "Range("C2")" durch die Variable "AusgabeZelle" ersetzt, sondern dies nur teilweise durchgeführt.
damit verwendest du an machen Stellen immer C2, auch wenn du D3 angeklickt hast.
noch ein Tipp, das ist der nächste Fehler, den du gemacht hast:
wenn du Punkt + Leerzeichen Trenner in der Split-Funktion verwendest, dann musst du auch als Abschlusspunkt Punkt+Leerzeichen einsetzen.
verwendest du am Ende nur den Punkt ohne Leerzeichen, erkennt das das Split nicht als Trennung und der Punkt gehört zum letzten Text, damit gibt es dann keinen Treffer mehr für den letzten Eintrag, weil er ja in der Liste auch ohne Punkt da steht.
Gruß Daniel
Anzeige
AW: Werte in Tabelle speichern
10.01.2023 16:42:44
Marcus
Ich denke das ich jetzt habe, allerdings habe ich noch Problem, dass bei erneutem Öffnen der Userform, die ausgewählten Text nicht ausgewählt sind.
https://www.herber.de/bbs/user/157194.xlsm
Gruß Marcus
AW: Werte in Tabelle speichern
10.01.2023 17:45:14
Daniel
Hi
"die ausgewählten Text nicht ausgewählt sind"
wenn du mal mehrere Texte anklickst, wirst du feststellen, dass immer nur der letzte Text beim erneuten Auswählen nicht mehr angezeigt wird, die anderen aber schon.
nur wenn du einen Text auswählst, ist die Auswahl dann leer.
Dieses Problem hatte ich dir aber in meiner letzten Antwort schon beschrieben und auch die Lösung dafür aufgezeit.
LIES BITTE WAS MAN DIR SCHREIBT!
Gruß Daniel
Anzeige
AW: Werte in Tabelle speichern
10.01.2023 17:52:57
Marcus
Kannst du mir bitte helfen? Dann sehe ich wo das Problem liegt. Ich bekomme das einfach nicht hin und Standardmäßig ist jetzt immer ein "." in den Zellen, der soll da nicht sein. Ich verzweifle hier.
AW: Werte in Tabelle speichern
10.01.2023 19:43:59
Daniel
Wie oft muss man dir eigentlich was erklären, damit du es kapierst?
Ich habe dir doch geschrieben, dass Problem ist, dass du zwischen den Sätzen Punkt+Leerzeichen einfügst und am Ende nur den Punkt. Du musst auch am Ende des gesamttextes Punkt+Leerzeichen anhängen, damit die Texterkennung funktioniert.
Alternativ kannst du auch den Punkt am Ende ganz weglassen.
Ich würde auch nicht den Punkt als Trennzeichen nehmen, weil es keine Sätze sind, sondern eher "/", " \" oder "|". Dann ist es normal, dass diese nur zwischen den Werten stehen und noch auch noch nach dem letzten Wert.
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige