Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1608to1612
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

Eintrag aus Listbox zurückschreiben

Eintrag aus Listbox zurückschreiben
02.03.2018 12:50:24
Tim
Hallo zusammen,
ich habe ein Problem, wenn ich einen Eintrag aus der Listbox ändere und zurück in die Datenbank schreiben will. Und zwar sind in Spalte "A" der Datenbank Namen gepflegt, welche mehrfach vorkommen, da ich zu jeder Zeile der Datenbank in Spalte "E" einen Prozess pflege Bsp.: Max Mustermann "A" hat "Drucken" gelernt "E"sollte sich dabei sein Kenntnisstand von Status "angelernt" auf "selbstständig" ändern, klicke ich den jeweiligen Eintrag in der Listbox an und gebe über eine Combobox den neuen Status mit.
jetzt habe ich das Problem, das beim abändern eines Eintrags, sich alle Einträge aus der Listbox in der Datenbank ändern, woran liegt das!?
Hier der Code:
Dim i As Integer
Dim j As Integer
Dim l As Integer
Dim ABD As String
l = Sheets("Datenbank").Cells(Rows.Count, 1).End(xlUp).Row
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
For k = 1 To l
ABD = ListBox1.List(i, 1)
If ABD = Sheets("Datenbank").Cells(k, 5) Then
Sheets("Datenbank").Cells(k, 8) = ComboBox2.Text
Sheets("Datenbank").Cells(k, 9) = Label7.Caption
Sheets("Datenbank").Cells(k, 10) = DateDiff("d", Sheets("Datenbank").Cells(k, 6), Sheets("Datenbank").Cells(k, 9))
End If
Next
End If

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eintrag aus Listbox zurückschreiben
02.03.2018 14:49:16
ChrisL
Hi Tim
Abgesehen vom fehlenden Next und der fehlenden Variablen Deklaration ist der Code OK.
Vielleicht die falsche Spalte.
ListBox1.List(i, 1) = Spalte 2
cu
Chris
AW: Eintrag aus Listbox zurückschreiben
02.03.2018 15:46:06
Tim
Ich habe die Spalten nochmal angepasst aber er setzt mir alle Einträge auf den neuen Status.
Rein von der Vorgehensweise her müsste er ja zuerst in Spalte "A" den entsprechenden "Name" finden, anschließend in Spalte "E" den ausgewählten "Prozess" und dann für die Auswahl in der Listbox den Status in Spalte "H" für den entsprechenden Eintrag der Auswahl ändert.
Die Listbox lese ich wie folgt ein, vielleicht liegt dort der Fehler!?
With Worksheets("Datenbank").Range("A:A")
Me.ListBox1.Clear
Set rngCell = .Find(Me.ComboBox1.Value, LookIn:=xlValues, LookAt:=xlWhole)
If Not rngCell Is Nothing Then
strFirstAddress = rngCell.Address
Do
With Me.ListBox1
.ColumnCount = 7
.AddItem
.List(.ListCount - 1, 0) = rngCell.Offset
.List(.ListCount - 1, 1) = rngCell.Offset(0, 3).Value
.List(.ListCount - 1, 2) = rngCell.Offset(0, 4).Value
.List(.ListCount - 1, 3) = rngCell.Offset(0, 5).Value
.List(.ListCount - 1, 4) = rngCell.Offset(0, 6).Value
.List(.ListCount - 1, 5) = rngCell.Offset(0, 7).Value
.List(.ListCount - 1, 6) = rngCell.Offset(0, 9).Value
.ColumnWidths = "3,0cm;4,0cm;8,0cm;5,0cm;5,0cm;5,0cm;2,0cm"
End With
Set rngCell = .FindNext(rngCell)
Loop While Not rngCell Is Nothing And rngCell.Address strFirstAddress
Else
End If
End With
Anzeige
AW: Eintrag aus Listbox zurückschreiben
02.03.2018 15:54:06
ChrisL
Mit dem Einlesen hat es nichts zu tun. In Spalte A wird im aktuellen Code nichts gesucht/verglichen.
AW: Eintrag aus Listbox zurückschreiben
02.03.2018 16:01:17
Tim
Okay, was muss ich anders machen, damit er zum einen in Spalte "A" erst den "Name" sucht und in Spalte "E" den dazugehörigen Prozess und somit die eindeutige Zeile in der Datenbank findet?
AW: Eintrag aus Listbox zurückschreiben
02.03.2018 18:23:55
ChrisL
Eine Beispieldatei ins Forum laden. Reduziert auf das Wesentliche, aber dennoch konkret genug, dass man z.B. erkennt ob gleiche Namen mehrfach vorkommen oder nicht.
Ich bin jetzt aber erstmal im Wochenende.
AW: Eintrag aus Listbox zurückschreiben
03.03.2018 07:26:24
hary
Moin
"somit die eindeutige Zeile in der Datenbank findet"
Beim Einlesecode:
Mach in der Listbox eine Spalte mehr, also 8 Spalten. Die 8. kannst du mit 0cm ausblenden.
.List(.ListCount - 1, 7) = rngCell.row'--traegt de Zeilennummer ein

So kannst du den passenden Eintrag, gemaess der Zeilennummer aus Spalte 8 der Listbox, in die richtige Zeile eintragen.
gruss hary
Anzeige
AW: Eintrag aus Listbox zurückschreiben
05.03.2018 08:17:06
Tim
Die Idee mit der Zeile ist gut, jedoch müsste der Code ja dann für das Zurückschreiben die Zeile suchen, was er aber aktuell nicht macht:
If ABD = Sheets("Datenbank").Cells(k, 1) Then
Wie gebe ich die Zeilennummer im Code an?
AW: Eintrag aus Listbox zurückschreiben
05.03.2018 09:20:01
hary
Moin Tim
Wenn du die Zeilennummern in die Spalte 8 der Listbox so einfuegst/eingefuegt hast:
.List(.ListCount - 1, 7) = rngCell.row'--traegt de Zeilennummer ein
Kannst du so die Zeilennummer aus Spalte 8 nutzen. Ungetestet!!!
Dim i As Long, k As Long
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
k = ListBox1.List(i, 7) '--Zeilennummer aus Spalte 8 der Listbox
Sheets("Datenbank").Cells(k, 8) = ComboBox2.Text
Sheets("Datenbank").Cells(k, 9) = Label7.Caption
Sheets("Datenbank").Cells(k, 10) = DateDiff("d", Sheets("Datenbank").Cells(k, 6), Sheets(" _
Datenbank").Cells(k, 9))
End If
Next

gruss hary
Anzeige
AW: Eintrag aus Listbox zurückschreiben
05.03.2018 09:55:50
Tim
Funktioniert, vielen Dank!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige