Excel: Userform mit Combobox um Zeilen zu löschen?


09.12.2022, 16:35

So soll es aussehen...

3 Antworten

Hallo

Um dies zu erreichen, können Sie eine benutzerdefinierte Benutzeroberfläche (Userform) erstellen, die eine ComboBox enthält, in der die Benutzer die Zeilennummer auswählen können, die gelöscht werden soll. Sie können dann einen Befehlsknopf hinzufügen, der dem Benutzer ermöglicht, die ausgewählte Zeile zu löschen, indem er darauf klickt.

Um Ihren Code zu schreiben, können Sie die UserForm_Initialize- und die CommandButton1_Click-Ereignisse verwenden. In der UserForm_Initialize-Ereignisprozedur können Sie die ComboBox initialisieren und die Zeilennummern von 1 bis 30 hinzufügen. In der CommandButton1_Click-Ereignisprozedur können Sie den Code schreiben, der die ausgewählte Zeile löscht.

Hier ist ein Beispiel für den Code, den Sie verwenden können:

Private Sub UserForm_Initialize()
    ' Initialisieren der ComboBox
    ComboBox1.Clear
    
    ' Hinzufügen der Zeilennummern von 1 bis 30 zur ComboBox
    For i = 1 To 30
        ComboBox1.AddItem i
    Next i
End Sub


Private Sub CommandButton1_Click()
    ' Speichern der ausgewählten Zeilennummer in einer Variablen
    Dim selectedRow As Integer
    selectedRow = ComboBox1.Value
    
    ' Löschen der ausgewählten Zeile
    Range("B" & selectedRow & ":L" & selectedRow).Clear
End Sub

Ich hoffe, dass dies hilft! Wenn Sie weitere Fragen haben oder Hilfe benötigen, lassen Sie es mich wissen.

Ein besserer (einfacherer) Vorschlag wäre, wenn du eine Spalte "Löschkennzeichnung" einfügst, in der die User z.B. ein X in jenen Zeilen eintragen, die gelöscht werden sollen.

Du könntest dann als "Admin" regelmäßig den Schutz aufheben, auf Löschkennzeichnung=X filtern und die Zeilen raushauen.

Diesen Vorgang kannst du auch als Makro schreiben, das mit dem Event "BeforeSave" getriggert wird:

Bild zum Beitrag

Hier der Code:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

  ThisWorkbook.ActiveSheet.Unprotect 'Schutz aufheben

  For Z = ThisWorkbook.ActiveSheet.Cells.SpecialCells(xlLastCell).Row To 2 Step -1 'Tabellenende bis Zeile 2

    If ThisWorkbook.ActiveSheet.Cells(Z, 1) = "X" Then

      ThisWorkbook.ActiveSheet.Rows(Z).Delete 'Zeile löschen, wenn in Spalte 1 "X" steht

    End If

  Next Z

  ThisWorkbook.ActiveSheet.Protect 'Schutz setzen

End Sub

Woher ich das weiß:eigene Erfahrung – Faulheit >> Neugier >> Wissen
 - (Microsoft, Microsoft Excel, Formel)

If IsNumeric(ComboBox1.text) then
Dim Zeile
Zeile = Combobox1.Text

Zeile = Worksheetfunction.RoundDown(Zeile,0) 'Für den Fall das eine Kommazahl eingegeben wurde.

Range("A" & Zeile &"XFD" & Zeile).Value = "" 'Dies löschte den Inhalt der Zellen aus
der gewählten Zeile. BEHÄLT aber die Zeile

Range(Zeile & ":" & Zeile).Delete 'Dies löscht die KOMPLETTE Zeile und schiebt
z.B. die Zeile 3->2

else
MsgBox "Bitte eine Zahl eingeben"
End if