Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1432to1436
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
Listbox-eintrag lässt sich nicht löschen
24.06.2015 11:24:35
peter
Hey Leute,
ich habe gerade Probleme beim Arbeiten mit einer Listbox. Ich habe eine Tabelle mit veschiedenen Einträgen und zeige von dieser Tabelle 2 Spalten in einer Listbox an:
Private Sub UserForm_Initialize()
With ListBox1
.ColumnCount = 2
.ColumnWidths = "2cm;2cm"
.ColumnHeads = True
ListBox1.RowSource = "Historie!B4:C10"
'oder:
'ListBox1.RowSource = "Tabelle1!A2:F" & loletzte
End With
End Sub
Nun möchte ich eine Befehlsschaltfläche löschen einfügen wo der selektierte Eintrag der Listbox !und! die dazugehörige zeile in der Tabelle gelöscht wird.
Dazu habe ich folgenden Code bereits probiert:
Private Sub CommandButton2_Click()
Dim idx As Integer
idx = ListBox1.ListIndex
ListBox1.RemoveItem idx
End Sub
bekomme aber eine Fehlermeldung!
VG Peter

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

Betreff
Datum
Anwender
Anzeige
AW: Listbox-eintrag lässt sich nicht löschen
24.06.2015 12:11:58
Rudi
hallo,
du musst erst den Eintrag in der Tabelle löschen und dann die RowSource neu festlegen.
Gruß
Rudi

AW: Listbox-eintrag lässt sich nicht löschen
24.06.2015 12:50:35
peter
Hallo Rudi,
ja ist mir auch aufgefallen habe jetzt folgende Änderungen vorgenommen:
Private Sub UserForm_Initialize()
With ListBox1
.ColumnCount = 1
.ColumnWidths = "2cm"
.ColumnHeads = True
ListBox1.RowSource = "Historie!A4:A100"
End With
End Sub
wobei Spalte A mit Datums gefüllt ist und der lösch-button:
Private Sub CommandButton2_Click()
'Löschen Schaltfläche Ereignisroutine
Dim lZeile As Long
'Wenn kein Datensatz in der ListBox markiert wurde, wird die Routine beendet
If ListBox1.ListIndex = -1 Then Exit Sub
'Zum Löschen benötigen wir die Zeilennummer des ausgewählten Datensatzes
lZeile = 4 'Start in Zeile 4
'Schleife solange etwas in der ersten Spalte in Tabelle "Historie" drin steht
Do While Trim(CStr(Worksheets("Historie").Cells(lZeile, 1).Value))  ""
'Datensatz ID Spalte mit selektiertem Eintrag der ListBox vergleichen
If ListBox1.Text = Trim(CStr(Worksheets("Historie").Cells(lZeile, 1).Value)) Then
'Eintrag gefunden, die ganze Zeile wird nun gelöscht
Worksheets("Historie").Rows(CStr(lZeile & ":" & lZeile)).Delete
'Die ListBox muss nun neu geladen werden!
Call UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
Exit Do 'Vorzeitiges Ende, da der Datensatz schon gefunden ist
End If
lZeile = lZeile + 1 'Nächste Zeile bearbeiten
Loop
End Sub

jetzt bekomm ich zwar keine Fehlermeldung aber es passiert einfach gar nichts wenn ich auf die Schaltfläche klicke...
Gruß Peter

Anzeige
AW: Listbox-eintrag lässt sich nicht löschen
24.06.2015 13:17:07
Rudi
Hallo,
aber es passiert einfach gar nichts
Woher weißt du das?
Ich vermute, dein Vergleich passt nicht.
Versuchs mal mit
If ListBox1.Text = Worksheets("Historie").Cells(lZeile, 1).Text) Then
Gruß
Rudi

AW: Listbox-eintrag lässt sich nicht löschen
24.06.2015 13:37:48
peter
Vermutlich passiert schon etwas, nur nichts für mich sichtbares und somit nicht das gewünschte...
Klappt leider auch nicht mit deiner Änderung

AW: Listbox-eintrag lässt sich nicht löschen
24.06.2015 13:43:17
Rudi
Hallo,
dann setz mal einen Haltepunkt (F9) und geh den Code mit F8 durch.
Gruß
Rudi

erledigt
24.06.2015 14:25:25
peter
danke die Methode kannte ich noch nicht da ich neu in VBA unterwegs bin jetzt hat es geklappt!

Anzeige
AW: Listbox-eintrag lässt sich nicht löschen
24.06.2015 14:11:06
Rudi
bei mir geht das so:
Private Sub UserForm_Initialize()
ListBox1.RowSource = "Historie!A4:A" & Sheets("Historie").Cells(Rows.Count, 1).End(xlUp).Row
End Sub
Private Sub CommandButton2_Click()
'Löschen Schaltfläche Ereignisroutine
Dim r As Range
'Wenn kein Datensatz in der ListBox markiert wurde, wird die Routine beendet
If ListBox1.ListIndex = -1 Then Exit Sub
'Zum Löschen benötigen wir die Zeilennummer des ausgewählten Datensatzes
'Schleife solange etwas in der ersten Spalte in Tabelle "Historie" drin steht
For Each r In Range(ListBox1.RowSource)
'Datensatz ID Spalte mit selektiertem Eintrag der ListBox vergleichen
If CLng(r) = ListBox1 Then
'Eintrag gefunden, die ganze Zeile wird nun gelöscht
r.EntireRow.Delete
'Die ListBox muss nun neu geladen werden!
Call UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
Exit For 'Vorzeitiges Ende, da der Datensatz schon gefunden ist
End If
Next
End Sub

Gruß
Rudi
Anzeige

376 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige