Thema Datum  Von Nutzer Rating
Antwort
21.05.2024 07:54:02 Tom
NotSolved
21.05.2024 11:24:26 Gast94262
NotSolved
21.05.2024 11:31:37 Tom
NotSolved
21.05.2024 23:08:01 ralf_b
NotSolved
22.05.2024 09:05:12 Gast54269
NotSolved
22.05.2024 17:56:37 ralf_b
NotSolved
Rot Zeile per dropdown in Tabelle löschen
22.05.2024 09:08:11 Tom
NotSolved

Ansicht des Beitrags:
Von:
Tom
Datum:
22.05.2024 09:08:11
Views:
124
Rating: Antwort:
  Ja
Thema:
Zeile per dropdown in Tabelle löschen

Für den nachfolgenden Code möchte ich mich ganz herzlich bei Gast8161 (ralf_b) bedanken und bei der KI dir mir dabei geholfen hat.
 

Dim oldValue As String
 
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ws As Worksheet
    Dim rngDropdown As Range
    Dim dataRange As Range
    Dim cell As Range
     
    ' Arbeitsblatt festlegen
    Set ws = ThisWorkbook.Worksheets("Eingabedialog") ' Passen Sie den Blattnamen entsprechend an
     
    ' Bereich der Dropdown-Liste festlegen
    Set rngDropdown = ws.Range("G4") ' Passen Sie die Dropdown-Zelle entsprechend an
     
    ' Überprüfen, ob die Änderung im Dropdown-Feld erfolgt ist
    If Not Intersect(Target, rngDropdown) Is Nothing Then
        ' Wenn der Wert in der Dropdown-Liste gelöscht wird
        If Target.Value = "" Then
            ' Datenbereich der Tabelle festlegen (z.B., A3:G100)
            Set dataRange = ThisWorkbook.Worksheets("Rohdaten").Range("A3:G" & ThisWorkbook.Worksheets("Rohdaten").Cells(ThisWorkbook.Worksheets("Rohdaten").Rows.Count, "A").End(xlUp).Row) ' Passen Sie den Bereich der Tabelle entsprechend an
             
            ' Durchsuchen Sie den Datenbereich, um die Zeile zu finden, die gelöscht werden soll
            For Each cell In dataRange
                If cell.Value = oldValue Then
                    ' Zeile löschen
                    cell.EntireRow.Delete
                     
                    ' Datenquelle der Dropdown-Liste aktualisieren
                    UpdateDropdown ws, rngDropdown, dataRange
                     
                    MsgBox "Eintrag und entsprechende Zeile wurden gelöscht."
                    Exit Sub
                End If
            Next cell
             
            MsgBox "Der ausgewählte Eintrag wurde in der Tabelle nicht gefunden."
        Else
            ' Speichern Sie den aktuellen Wert als alten Wert
            oldValue = Target.Value
        End If
    End If
     
    ' Überprüfen, ob die Änderung in der Dropdown-Liste (Zelle G4) des Tabellenblatts "Blatt1" stattgefunden hat
    If Target.Address(0, 0) = "G4" And Target.Value <> "" Then
        selectedOption = Me.Range("G4").Value
        With Sheets("Rohdaten")
            ' Suche nach der ausgewählten Option in der ersten Spalte
            searchData = Application.Match(selectedOption, .Columns(1), 0)
             
            If IsNumeric(searchData) Then
                ' Wenn die Option gefunden wurde, übertrage die Daten in J13:J17
                Application.EnableEvents = False
                Me.Range("J13:J17") = WorksheetFunction.Transpose(.Cells(searchData, 2).Resize(1, 5))
                Application.EnableEvents = True
            Else
                ' Wenn die Option nicht gefunden wurde, füge sie als neue Zeile hinzu
                lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
                .Cells(lastRow, 1).Value = selectedOption
                Application.EnableEvents = False
                Me.Range("J13:J17").ClearContents
                Application.EnableEvents = True
            End If
        End With
    Else
        ' Überprüfe, ob die Änderung in dem Bereich J13:J17 stattgefunden hat
        If Not Intersect(Target, Me.Range("J13:J17")) Is Nothing Then
            If Me.Range("G4").Value <> "" Then
                With Sheets("Rohdaten")
                    searchData = Application.Match(Me.Range("G4").Value, .Columns(1), 0)
                    If IsNumeric(searchData) Then
                        .Cells(searchData, 2).Resize(1, 5).Value = WorksheetFunction.Transpose(Me.Range("J13:J17").Value)
                    End If
                End With
            End If
        End If
    End If
End Sub
 
Sub UpdateDropdown(ws As Worksheet, rngDropdown As Range, dataRange As Range)
    Dim uniqueValues As Collection
    Dim cell As Range
    Dim arr() As String
    Dim i As Long
     
    ' Sammlung einzigartiger Werte erstellen
    Set uniqueValues = New Collection
    On Error Resume Next
    For Each cell In dataRange
        If cell.Value <> "" Then
            uniqueValues.Add cell.Value, CStr(cell.Value)
        End If
    Next cell
    On Error GoTo 0
     
    ' Überprüfen, ob die Sammlung einzigartige Werte enthält
    If uniqueValues.Count > 0 Then
        ' Sammlung in Array umwandeln
        ReDim arr(1 To uniqueValues.Count)
        For i = 1 To uniqueValues.Count
            arr(i) = uniqueValues(i)
        Next i
         
        ' Dropdown-Liste aktualisieren
        With rngDropdown.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=Becken" ' Verwenden Sie den Namensbereich "Becken" als Quelle für die Dropdown-Liste
            .IgnoreBlank = True
            .InCellDropdown = True
            .ShowInput = True
            .ShowError = True
        End With
    Else
        ' Falls keine eindeutigen Werte vorhanden sind, Dropdown-Liste leeren
        With rngDropdown.Validation
            .Delete
        End With
    End If
End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
21.05.2024 07:54:02 Tom
NotSolved
21.05.2024 11:24:26 Gast94262
NotSolved
21.05.2024 11:31:37 Tom
NotSolved
21.05.2024 23:08:01 ralf_b
NotSolved
22.05.2024 09:05:12 Gast54269
NotSolved
22.05.2024 17:56:37 ralf_b
NotSolved
Rot Zeile per dropdown in Tabelle löschen
22.05.2024 09:08:11 Tom
NotSolved