Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1340to1344
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 löschen bzw ändern

Eintrag aus Listbox löschen bzw ändern
26.12.2013 10:56:27
Marc
Morgen zusammen,
diese Listbox macht mich fertig.
Ich möchte gerne die Listbox eintrage mit einem Button löschen, bzw mit einem anderen Button den Eintrag ändern. Die Textboxen zeigen das Datum - das funktioniert auch.
Aufbau der Userform
Private Sub ListBox1_Click()
TextBox1.Value = ListBox1.List(ListBox1.ListIndex, 1)
TextBox2.Value = ListBox1.List(ListBox1.ListIndex, 2)
End Sub
Private Sub UserForm_Initialize()
ListBox1.RowSource = "Bu8:BW37"
End Sub
In BV steht das von-Datum in BW das bis-Datum, in Bu steht 1,2,3 also nur eine die Anzahl der Einträge
zum löschen hab ich bisher den Code
Private Sub CommandButton2_Click()
'markierte Einträge löschen
Dim lngZeile As Long
Dim intItem As Integer
With Me.ListBox1
For intItem = 0 To .ListCount - 1
If .Selected(intItem) Then
lngZeile = .List(intItem, 1)
With Worksheets("Gesamtübersicht")
.Range(Cells(lngZeile + 8, 74), Cells(lngZeile, 75)).ClearContents
End With
End If
Next intItem
End With
Call Tagesort
UserForm1.Repaint
End Sub
Wenn ich ein Eintrag auswähle und den cmb2 klicke passiert aber nichts :/... es wird nur sortiert (call Tagesort)
Um Hilfe bin ich sehr dankbar!!

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eintrag aus Listbox löschen bzw ändern
26.12.2013 22:06:16
fcs
Hallo Marc,
hier kann es verschiedene Probleme geben:
1. Dein Code zum Löschen von Einträgen in der Tabelle ist geeignet für eine Listbox mit Mehrfachauswahl (Eigenschaft MultiSelect der Listbox ist nicht "0-fmMultiSelectSingle).
Bei einer Listbox mit Einfachauswahl ist er wirkungslos.
2. Da du für die Datenquelle der Listbox einen Zellbereich in einem Tabellenblatt festlegst kommt es zu Rückkopplungseffekten, wenn die Werte in der Tabelle geändert/gelöscht werden
- das Click-Ereignis wird gestartet
- eine Mehrfachauswahl in der Listbox wird zurückgesetzt.
Das Clickereignis kann man noch umgehen. Das Zurücksetzen der Mehrfachauswahl nicht.
Du solltest also deine Listbox für einzelauswahl konfigurieren.
Außerdem sollten die Textboxen für die Datumswerte so konfiguriert werden, dass auf gültige Eingaben geprüft wird und der Code des Commandbuttons sollte nicht die Textboxinhalte sondern den entsprechenden Datumswert in die Tabelle schreiben. Nur so funktioniert auch das Sortieren korrekt.
Nachfolgend der Code des Userforms, wie er etwa aussehen müßte.
Gruß
Franz
'Code des Userforms - erstellt/bearbeitet unter Excel 2010
Option Explicit
Private bolNoAction As Boolean
Private Sub Tagesort()
bolNoAction = True
With Worksheets("Gesamtübersicht").Range("BU8:BW37")
.Sort key1:=.Cells(1, 2), order1:=xlAscending, _
key2:=.Cells(1, 3), order2:=xlAscending, _
key3:=.Cells(1, 1), order3:=xlAscending, Header:=xlNo
End With
bolNoAction = False
End Sub
Private Sub CommandButton1_Click()
'Daten zum selektierten Listeneintrag ändern - Textboxinhalte in Tabelle eintragen
Dim lngZeile As Long
Dim intItem As Integer
bolNoAction = True
With Me.ListBox1
lngZeile = .ListIndex + 8
End With
With Worksheets("Gesamtübersicht")
'von-Datum
If Me.TextBox1 = "" Then
.Cells(lngZeile, 74).ClearContents
ElseIf IsDate(Me.TextBox1) Then
.Cells(lngZeile, 74).Value = CDate(Me.TextBox1)
Else
.Cells(lngZeile, 74).Value = Me.TextBox1
End If
'bis-Datum
If Me.TextBox2 = "" Then
.Cells(lngZeile, 75).ClearContents
ElseIf IsDate(Me.TextBox2) Then
.Cells(lngZeile, 75).Value = CDate(Me.TextBox2)
Else
.Cells(lngZeile, 75).Value = Me.TextBox2
End If
End With
Call Tagesort
UserForm1.Repaint
bolNoAction = False
Me.ListBox1.ListIndex = -1
TextBox1.Value = ""
TextBox2.Value = ""
End Sub
Private Sub CommandButton2_Click()
'markierten Eintrag löschen
Dim lngZeile As Long
Dim intItem As Integer
bolNoAction = True
With Me.ListBox1
lngZeile = .ListIndex + 8
End With
With Worksheets("Gesamtübersicht")
.Range(.Cells(lngZeile, 74), .Cells(lngZeile, 75)).ClearContents
End With
Call Tagesort
UserForm1.Repaint
bolNoAction = False
Me.ListBox1.ListIndex = -1
TextBox1.Value = ""
TextBox2.Value = ""
End Sub
Private Sub ListBox1_Click()
'Daten des selektierten Listeneintrag in Textboxen eintragen
If bolNoAction = True Then Exit Sub
With ListBox1
If .ListIndex = -1 Then
TextBox1.Value = ""
TextBox2.Value = ""
Else
'von-Datum
If .List(.ListIndex, 1) = "" Then
TextBox1.Value = ""
ElseIf IsNumeric(.List(.ListIndex, 1)) Then
TextBox1.Value = Format(.List(.ListIndex, 1), "DD.MM.YYYY")
Else
TextBox1.Value = .List(.ListIndex, 1)
End If
'bis-Datum
If .List(.ListIndex, 2) = "" Then
TextBox2.Value = ""
ElseIf IsNumeric(.List(.ListIndex, 2)) Then
TextBox2.Value = Format(.List(.ListIndex, 2), "DD.MM.YYYY")
Else
TextBox2.Value = .List(.ListIndex, 2)
End If
End If
End With
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Prüfung der Eingabe auf gültiges Datum
With Me.TextBox1
If .Value = "" Then
'do nothing
ElseIf IsDate(.Value) Then
.Value = Format(CDate(.Value), "DD.MM.YYYY")
Else
MsgBox "Eingabe ist kein gültiges Datum", vbInformation + vbOKOnly, _
"Prüfung Eingabe - Von-Datum"
Cancel = True
End If
End With
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Prüfung der Eingabe auf gültiges Datum
With Me.TextBox2
If .Value = "" Then
'do nothing
ElseIf IsDate(.Value) Then
.Value = Format(CDate(.Value), "DD.MM.YYYY")
Else
MsgBox "Eingabe ist kein gültiges Datum", vbInformation + vbOKOnly, _
"Prüfung Eingabe - Bis-Datum"
Cancel = True
End If
End With
End Sub
Private Sub UserForm_Initialize()
ListBox1.RowSource = "Gesamtübersicht!BU8:BW37"
End Sub

Anzeige
AW: Eintrag aus Listbox löschen bzw ändern
28.12.2013 09:26:08
Marc
Morgen,
danke dir erst mal für den Code und vor allem für die Erklärung, Der code hat auch so weit funktioniert.
Musste die Userform aber doch etwas abändern.
Wünsch dir ein guten Rutsch!!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige