AW: Listbox zeigt fehler
09.02.2025 16:06:52
Piet
Hallo karl
Fehler sind leicht zu finden wenn man die Beispieldatei hat. Dann erkennt man sie auf Anhieb!
Mein Verdacht mit lZeile war korrekt, muss aber um die Zahl 7 erweitert werden. Verstehst du warum?
Die ListBox beginnt mit Index 0 bis n. Wenn deine Daten ab Zeile 7 beginnen musst du 7 dazuzählen!
Zur Vorsicht hole ich mir den ListBox Namen und vergleiche ihn mit dem Namen in der Tabelle!
Du hast einen weiteren Fehler im Code für --> Namen löschen. Da kommt Laufzeitfehler bei Fundzeile!
Die ist weder als Dim deklariert, noch wird hier der ListIndex gesetzt. Die Variable steht somit auf Null!
Ein zweites Problem in dem Code sind OptionsButton, die es auf der UserForm nicht gibt!
Und der letzte Befehl - ActiveSheet.Protect - ergibt einen Laufzeitfehler, den ich nicht verstehe.
Ich habe dir beide Codes so geändert das beide funtkionieren. Teste sie bitte selbst.
Sie Sortierroutine habe ich nach oben verschoben, sortiert wird sofort nach dem löschen.
Würde mich freuen wenn damit dein Anliegn zufriedenstellend gelöst ist.
Ich bin gespannt. Herzliche Grüsse aus Izmir an die Heimat.
mfg Piet
Public Sub CommandButton2_Click()
Dim lZeile As Long, MName As String
If TextBox1.Value = "" Then
MsgBox "Sie müssen einen Namen eingeben - danke.", _
48, " Hinweis für " & Application.Username
TextBox1.SetFocus
Exit Sub
End If
Application.ScreenUpdating = False
' lZeile = ListBoxNeu1.List(ListBoxNeu1.ListIndex, 0)
lZeile = ListBoxNeu1.ListIndex + 7
MName = ListBoxNeu1.List(ListBoxNeu1.ListIndex)
With Worksheets("Start")
.Unprotect (getStrPassWort)
If .Range("A" & lZeile) = MName Then _
.Range("A" & lZeile) = WorksheetFunction.Proper(TextBox1.Value)
Call Sortieren
TextBox1.Value = ""
End With
Dim vTemp As Variant
With ThisWorkbook.Worksheets("Start") ' den Tabellenblattnamen ggf. anpassen!
vTemp = .Range("A7:A25" & .Cells(Rows.Count, 1).End(xlUp).Row)
ListBoxNeu1.List = vTemp
End With
Application.ScreenUpdating = True
CommandButton1.Enabled = True ' den Übernehmen-Button entsperren
CommandButton4.Enabled = False ' den Lösch-Button sperren
' Me.Label9.Caption = ActiveSheet.Range("A1").Value
End Sub
Public Sub CommandButton4_Click()
Dim Fundzeile As Long, MName As String
With Worksheets("Start")
.Unprotect (getStrPassWort)
Fundzeile = ListBoxNeu1.ListIndex + 7
MName = ListBoxNeu1.List(ListBoxNeu1.ListIndex)
If Fundzeile > 0 Then
If MsgBox("Wollen Sie den/die """ & TextBox1.Value & """ wirklich löschen?", _
vbYesNo + vbQuestion, " Löschabfrage, nur zur Sicherheit.") = vbYes Then
.Unprotect (getStrPassWort)
' .Range("A" & Fundzeile).Delete Shift:=xlUp
If .Range("A" & Fundzeile) = MName Then _
.Range("A" & Fundzeile).ClearContents
Call Sortieren
Dim vTemp As Variant
With ThisWorkbook.Worksheets("Start") ' den Tabellenblattnamen ggf. anpassen!
vTemp = .Range("A7:A25" & .Cells(Rows.Count, 1).End(xlUp).Row)
ListBoxNeu1.List = vTemp
End With
' With ListBoxNeu1
' Call Array_fuellen_I
' .Clear
' .Column = aTmp
' End With
' Unload UserForm1
End If
End If
.Protect (getStrPassWort)
End With
TextBox1.Value = ""
CommandButton1.Enabled = True ' den Übernehmen-Button entsperren
UserForm_Initialize
Unload Me
'** ab hier Luafzeitfehler incl. Protect!!
' Me.OptionButton1.Visible = True
' Me.OptionButton2.Visible = True
' Me.OptionButton1.Enabled = True
' Me.OptionButton2.Enabled = True
' ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios _
:=True, Password:=getStrPassWort
End Sub