Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1556to1560
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
Zelleninhalte über Listbox ändern
17.05.2017 17:47:34
Rüdi
Hallo ins Forum,
ich habe ein Problem mit der Synchronisation zwischen Listbox Einträgen und der Quelltabelle. Ich dachte die perfekte Lösung im Forum gefunden zu haben. "Code unten" Aber leider, funktioniert die Lösung bei mir nicht ganz. Konkret geht es um eine Listbox, welche ich über TextBoxen fülle. Über einen Button, in diesem Fall "CommandButton3", kann ich die Werte von den TextBoxen auf die ListBox übertragen. Es schien am Anfang zu funktionieren, doch nun verändert es mir jedes mal die Überschriften. Ich klicke eine Reihe in der Listbox an, schreibe Werte in die TextBox und drücke auf den Button. Jedoch passiert hier zunächst gar nichts. Nach einem weiteren Klick auf den Button, steht der Textboxinhalt auf einmal in der Überschrift der Listbox. Und zwar genau in der mit der TextBox verlinkten Spalte.
Zudem funktioniert bei mir der initialize Befehl nicht. Die Rowsource und die Columnheads funzt bei mir erst, wenn ich es mit einem Klick auf einen Button ausführe. Ich dachte der initialize Befehl wird bei Ausführung der Userform automatisch ausgeführt. Bin ich da falscher Ansicht?
Private Sub CommandButton3_Click()
With Range("Tabelle1!A2:C100")
Me.Tag = "1"
.Cells(ListBox1.ListIndex + 1, 1).Value = ComboBox1
.Cells(ListBox1.ListIndex + 1, 2).Value = ComboBox2
.Cells(ListBox1.ListIndex + 1, 3).Value = CDbl(TextBox1.Value)
Me.Tag = ""
End With
End Sub
Private Sub userform_initialize()
With ListBox1
.RowSource = "Tabelle1!A2:C100"
.ColumnHeads = True
End With
End Sub
Private Sub ListBox1_Click()
If Me.Tag = "1" Then Exit Sub
'klick = ListBox1.ListIndex
With ListBox1
UserForm1.ComboBox1 = .List(.ListIndex, 0)
UserForm1.ComboBox2 = .List(.ListIndex, 1)
UserForm1.TextBox1 = .List(.ListIndex, 2)
End With
End Sub
Bin für Vorschläge sehr dankbar.
Vielen Dank im Voraus
Rüdi

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelleninhalte über Listbox ändern
17.05.2017 19:22:29
ChrisL
Hi Rüdi
Vielleicht wurde in der ListBox noch keine Auswahl getroffen, dann ist der ListIndex noch auf -1. Anstelle einer Wenn-Abfrage würde ich die Einstellung vom CommandButton Enable=False setzen und erst bei Click auf die ListBox aktivieren.
Private Sub ListBox1_Click()
CommandButton3.Enable = True
With ListBox1
UserForm1.ComboBox1 = .List(.ListIndex, 0)
UserForm1.ComboBox2 = .List(.ListIndex, 1)
UserForm1.TextBox1 = .List(.ListIndex, 2)
End With
End Sub
Me.Tag kann soweit ich sehe weg.
Private Sub CommandButton3_Click()
With Worksheets("Tabelle1")
.Cells(ListBox1.ListIndex + 2, 1).Value = ComboBox1
.Cells(ListBox1.ListIndex + 2, 2).Value = ComboBox2
.Cells(ListBox1.ListIndex + 2, 3).Value = CDbl(TextBox1.Value)
Me.Tag = ""
End With
End Sub
Das Initialize Ereignis brauchst du gar nicht, weil die RowSource und ColumnHead kannst du ebenfalls in der Einstellung von der Listbox verändern. Ich würde das Ereignis noch einmal neu erstellen, weil Userform_Initilize wird eigentlich automatisch gross geschrieben. Irgendwas ist da faul.
(Wenn du Userform mit Hide anstelle Unload schliesst, dann wird natürlich auch nicht neu initialisiert.)
Bitte für Anschlussfragen eine kleine Beispieldatei.
cu
Chris
Anzeige
AW: Zelleninhalte über Listbox ändern
23.05.2017 18:21:47
Rüdi
Hallo Chris,
vielen Dank für die schnelle Antwort und entschuldige meine späte Reaktion aber ich war die letzten Tage verreist. Ich habe deinen Vorschlag gerade ausprobiert. Die Überschriften verändern sich nun nicht mehr. Leider bekomm ich nun eine Fehlermeldung, sobald ich auf die Listbox klicke.
Also, der Plan von mir währe auf eine Zeile in der Listbox zu klicken und dann die Felder zu bearbeiten.
Ich füge die Datei mit zwei Formularen an. Einfach die HaltestellenInputManuell abspielen. Davor bitte im Modul HaltestellenEingabeManuell einen gewünschten Speicherplatz in Zeile 29 einstellen.
Des Weiteren habe ich noch einen Add Button. Gewollt war nach Dateneingabe auf Add zu klicken und danach automatisch eine Zeile weiter unten markieren und dann diese zu befüllen. Ich dachte auch mit dem Lösch Button eine Zeile komplett zu löschen. Gibt es vielleicht da auch einen eleganten Befehl, mir würde bestimmt was einfallen aber wahrscheinlich ist das für euch nur n Einzeiler auf den ich nie komm. ;)
Vielen Dank im Voraus
Rüdi
https://www.herber.de/bbs/user/113757.xlsm
Anzeige
AW: Zelleninhalte über Listbox ändern
26.05.2017 12:32:34
Rüdi
Hallo, nochmal in die Runde.
Da ich die Fehlermeldung "Datenobjekt nicht gefunden" bei Command Button3.Enable = True nicht weg bekam, hab ich es nochmals mit der wenn Bedingung versucht. Jetzt kann ich die Listbox wieder anklicken, aber nach dem Click auf den Button3, wird immer nur die erste Zeile verändert. Irgendwas scheint mit den Index nicht zu funktionieren, aber ich sehe einfach den Fehler nicht. Ich stelle nochmal eine abgeänderte Version mit rein. Es wäre toll wenn ihr es euch anschaut. Im Modul "HaltestellenEingabeManuell" müsst ihr nur den Speicherplatz in Zeile 29 anpassen. Und die "HaltestellenInputManuell" abspielen.
Vielen vielen Dank
https://www.herber.de/bbs/user/113798.xlsm
Rüdi
Anzeige
AW: Zelleninhalte über Listbox ändern
26.05.2017 17:57:01
Rüdi
Achso, als Adendum. Falls sich jemand das Programm ansieht, nach dem Start des "HaltestellenInputManuell" auf Neu anlegen Klicken. Dann wird die Listbox initialisiert.
Vielen Dank

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige