Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

ListBox mit Suchfeld speichert falsch

Forumthread: ListBox mit Suchfeld speichert falsch

ListBox mit Suchfeld speichert falsch
27.03.2025 15:14:47
Eumel1965
Hallo VBA Gemeinde,
ich habe in einer UserForm eine ListBox und ein Suchfeld eingebaut. Wenn ich in der ListBox den Eintrag anklicke werden die Daten in die einzelnen TextBoxen eingetragen und ich kann diese auch wieder in die vorhandene Zeile speichern. Wenn ich im Suchfeld den Wert suche werden mir auch die richtigen Daten angezeigt und auch in die richtigen TextBoxen der UserForm eingetragen. Wenn ich jetzt speichere werden die Daten aber eine Zeile höher gespeichert. Ich hoffen jemand hat eine Idee was da falsch läuft. Danke im Vorraus.



Private Sub UserForm_Initialize()

ListBoxBearbeiten1
txtFilterName.SetFocus
End Sub

Private Sub ListBoxBearbeiten1()
txtFilterName_Change
End Sub

Private Sub txtFilterName_Change()
Dim LETZTEZEILE
Dim arrWerte As Variant
Dim FilterWert As Variant
LETZTEZEILE = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row

With Me.ListBoxBearbeiten
.RowSource = ""
.Clear
.ColumnCount = 47
.ColumnWidths = "50;10;22;20"
.ColumnHeads = False
End With

For ZEILE = 2 To LETZTEZEILE
If InStr(1, LCase(ActiveSheet.Cells(ZEILE, 2).Value), LCase(Me.txtFilterName.Value)) > 0 Then
'ListBoxDaten befuellen
Me.ListBoxBearbeiten.AddItem ActiveSheet.Cells(ZEILE, 2).Value
Me.ListBoxBearbeiten.List(Me.ListBoxBearbeiten.ListCount - 1, 4) = ZEILE
End If
Next ZEILE

End Sub

Private Sub ListBoxBearbeiten_Click()

TextBoxID.Text = ActiveSheet.Range("A" & ListBoxBearbeiten.List(ListBoxBearbeiten.ListIndex, 4)).Value
txtDatum.Text = ActiveSheet.Range("B" & ListBoxBearbeiten.List(ListBoxBearbeiten.ListIndex, 4)).Value

End Sub

Private Sub DatenBuchen()

pboNOT = True

shÜbersicht.Cells(ListBoxBearbeiten.ListIndex + 2, 2).Value = txtDatum.Text
shÜbersicht.Cells(ListBoxBearbeiten.ListIndex + 2, 3).Value = ComboBoxKunde.Text

pboNOT = False
Dim Antwort As Integer
Antwort = MsgBox("Änderungen wurden gespeichert", vbOKOnly)
End Sub

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ListBox mit Suchfeld speichert falsch
27.03.2025 15:30:43
Alwin Weisangler
Hallo,

nutze doch einfach die Zeilennummer, welche du der Listbox mitgibst. Da brauchst du dann nicht den Listindex +2.

Gruß Uwe
AW: ListBox mit Suchfeld speichert falsch
27.03.2025 15:34:38
daniel
Hi

du versuchst beim Rückschreiben der Daten ins Tabellenblatt die Zeilennummer aus dem ListIndex zu ermitteln:
shÜbersicht.Cells(ListBoxBearbeiten.ListIndex + 2, 2).Value = ...

das ist aber nicht zulässig, weil du die Listbox nicht 1:1 aus der Tabelle befüllst, sondern die Daten noch filterst, das mach das IF vor dem .Additem:
If InStr(1, LCase(ActiveSheet.Cells(ZEILE, 2).Value), LCase(Me.txtFilterName.Value)) > 0 Then

daher passen Zeilennummer und Listindex nicht mehr zueinander, sobald die erste Zeile ausgefiltert wurde.

beim Programmieren der Befüllung war dir das noch bewusst, denn du übernimmst die Zeilennummer aus Excel mit in die Listboxliste:
Me.ListBoxBearbeiten.List(Me.ListBoxBearbeiten.ListCount - 1, 4) = ZEILE

dh du musst auch beim Rückschreiben in die Tabelle diese gespeicherte Zeilennummer anstelle des Listindexes verwenden:
in diesem Teil:
shÜbersicht.Cells(ListBoxBearbeiten.ListIndex + 2, 2).Value = txtDatum.Text

shÜbersicht.Cells(ListBoxBearbeiten.ListIndex + 2, 3).Value = ComboBoxKunde.Text


musst du das ListBoxBearbeiten.ListIndex + 2 ersetzen durch: ListBoxBearbeiten.List(ListboxBearbeiten.ListIndex, 4)
denn da hast du die Zeilennummer gesichert.

Gruß Daniel
Anzeige
AW: ListBox mit Suchfeld speichert falsch
27.03.2025 16:47:57
Eumel1965
Hallo Daniel und Alwin, danke für eure Meldungen, läuft jetzt wie es soll.
AW: ListBox mit Suchfeld speichert falsch
28.03.2025 11:51:24
Marc
Als Tipp, dieses ActiveSheet als Definition für eine Tabelle die benutzt werden soll, kann ganz schnell nach hinten los gehen, wenn Ausversehen eine falsche Tabelle aktiv ist..



zudem ist es sinnvoll in jedem Sub
mit

ThisWorkbook.Activate

zu beginne, falls jemand mehr als 2 Excelmappen auf hat, oder Daten eventuell zwischen Mappen austauscht, gerade wenn noch eine Userform aktiv ist, kann für Excel ganz schnell mal eine andere Mappe aktiv werden, und alles endet in einem Chaos..
Anzeige
AW: ListBox mit Suchfeld speichert falsch
28.03.2025 17:16:43
Eumel1965
Hallo Marc, danke für den Hinweis. Bedeutet wenn ich es richtig verstehe, das ich vor das Active Sheet noch das Workbook setzen muss? Sorry aber ich bin kein VBA Profi.
AW: ListBox mit Suchfeld speichert falsch
29.03.2025 16:18:10
Marc
nein

am Anfang eines Sub
am besten immer ThisWorbook.Activate setzen.

Damit bist du sicher, das genau das Workbook aktiv ist, in dem du arbeiten möchtest


und statt ActiveSheet

setzt du die Tabelle in der gearbeitet werden soll in eine variable

z.B. Tabelle = "Tabelle1"

und statt ActiveSheet.Befehle

schreibst du dann
Sheets(Tabelle).Befehle

so bist du sicher, das in der Tabelle Daten geladen und geschrieben werden, die du ausgewählt hast, egal, welche gerade aktive ist...
Anzeige
AW: ListBox mit Suchfeld speichert falsch
28.03.2025 18:19:32
Eumel1965
Hallo Marc, danke nochmal für deinen Hinweis, habe ihn jetzt umgesetzt. Läuft wie es soll und es gibt keine Beeinträchtigungen durch andere Arbeitsmappen. Wieder was dazu gelernt.

Forumthreads zu verwandten Themen

Anzeige