Registriert seit: 09.04.2026
Version(en): Office LTCE 2021 Standard
Ich habe mir mit Hilfe des Internets eine Dropdown-Menü mit Mehrfachwahl erstellt, Mein Wissen dahingehend geht gegen 0. In dieser Liste möchte ich einzelne Inhalte löschen, was leider so, wie ich es mit dahcte, nicht funktioniert. Der VBA-Code, den ich im Internet gefunden habe, sieht so aus: Private Sub Worksheet_Change(ByVal Target As Range) 'Updated by Extendoffice 20240118 Dim xRng As Range Dim xValue1 As String Dim xValue2 As String Dim delimiter As String Dim TargetRange As Range Set TargetRange = Me.UsedRange ' Users can change target range here delimiter = ", " ' Users can change the delimiter here If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub On Error Resume Next Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation) If xRng Is Nothing Then Exit Sub Application.EnableEvents = False xValue2 = Target.Value Application.Undo xValue1 = Target.Value Target.Value = xValue2 If xValue1 <> "" And xValue2 <> "" Then If Not (xValue1 = xValue2 Or _ InStr(1, xValue1, delimiter & xValue2) > 0 Or _ InStr(1, xValue1, xValue2 & delimiter) > 0) Then Target.Value = xValue1 & delimiter & xValue2 Else Target.Value = xValue1 End If End If Application.EnableEvents = True On Error GoTo 0 End Sub Kann mir jemand behilflich sein? Gruß Ralf
Registriert seit: 25.11.2021
Version(en): 2019, 365
(09.04.2026, 11:35)Bienentreu schrieb: Ich habe mir mit Hilfe des Internets eine Dropdown-Menü mit Mehrfachwahl erstellt, Mein Wissen dahingehend geht gegen 0. In dieser Liste möchte ich einzelne Inhalte löschen, was leider so, wie ich es mit dahcte, nicht funktioniert.  Moin, geht auch ohne VBA. Schau mal hier. Wenn Du Einträge löschen willst, dann machst Du das in der Quelle.
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Ciao, Ralf
Registriert seit: 09.04.2026
Version(en): Office LTCE 2021 Standard
Und wenn ioch einzelne, vorher ausgewählte Inhalte abwählen möchte?
Registriert seit: 16.08.2020
Version(en): Office 2024
Hallo, meinst du in DD-Menü steht: Montag;Dienstag;Mittwoch;Donnerstag und die Ausgabe nach Auswahl in Zelle ist: 1. Aw Montag 2. Aw Montag, Donnerstag 3. Aw Montag, Donnerstag, Mittwoch ... ? Oder soll ein einmal ausgewählter Wert aus dem Menü des DropDowns entfernt werden (Dies kann man mit Formeln machen). Gruß Uwe
Registriert seit: 25.11.2021
Version(en): 2019, 365
(09.04.2026, 12:42)Bienentreu schrieb: Und wenn ioch einzelne, vorher ausgewählte Inhalte abwählen möchte? Das ist unter Beachtung einer vernünftigen und konsistenten Datenhaltung ein No Go. Da müsstest Du schon sehr genau wissen, ob Du das willst, denn dann müsstest Du die referentielle Integrität beachten und alle Datensätze die den gelöschten Inhalt beinhalten ebenfalls löschen. Davon kann ich Dir nur abraten! Oder Du verzichtest auf das Dropdown an dieser Stelle und holst Dir den Wert von anderer Stelle... Könnte z. Bsp. ein zentrales Dropdown oder ein Pivottable sein, mit deren Werten Du die Zielzelle füllst.
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Ciao, Ralf
Registriert seit: 09.04.2026
Version(en): Office LTCE 2021 Standard
Genau dass mit dem DD-Menü, ich hab "Mo, Di, Mi, Do" gewählt und will "Di" rausnehmen, dass nur noch ">Mo, Mi, Do" da steht!
Registriert seit: 16.08.2020
Version(en): Office 2024
09.04.2026, 16:03
(Dieser Beitrag wurde zuletzt bearbeitet: 09.04.2026, 16:14 von Egon12.)
Hallo,
"Mo, Di, Mi, Do" steht dann so in Zelle und als Folge dessen soll Di aus den Dropdown Menü entfernt werden?
Gruß Uwe
Oder soll, wenn du erneut Di wählst Di aus der Zelle entfernt werden?
Gruß Uwe
Registriert seit: 16.08.2020
Version(en): Office 2024
Hallo, mit kleiner Einschränkung das rückwärts geleert werden muss, kann man es so machen: Code: Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range) Dim rngA As Range, tmpNeu$, tmpAlt, tmp, tmpA, i& On Error GoTo Errorhandling If Not Application.Intersect(Target, Range("B4:B14")) Is Nothing Then Set rngA = Target.SpecialCells(xlCellTypeAllValidation) If rngA Is Nothing Then GoTo Errorhandling If Not Application.Intersect(Target, rngA) Is Nothing Then Application.EnableEvents = False tmpNeu = Target.Value Application.Undo tmpAlt = Target.Value Target.Value = tmpNeu If tmpAlt <> "" Then If InStr(1, tmpAlt, tmpNeu, vbTextCompare) = 0 Then If tmpNeu <> "" Then Target.Value = tmpAlt & ", " & tmpNeu End If Else tmp = Split(tmpAlt, ", ") For i = LBound(tmp) To UBound(tmp) If Not tmpNeu = tmp(i) Then tmpA = tmpA & tmp(i) & ", " End If Next i If UBound(tmp) > 0 Then Target.Value = Left(tmpA, Len(tmpA) - 2) Else Target = "" End If End If End If End If End If Errorhandling: Application.EnableEvents = True End Sub
dropdown mit mehrfachauswahl und zurück.xlsm (Größe: 17,91 KB / Downloads: 2)
Gruß Uwe
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Ralf, teste mal damit: Code: Private Sub Worksheet_Change(ByVal Target As Range) 'Updated by Extendoffice 20240118 Dim xRng As Range Dim xValue1 As String Dim xValue2 As String Dim delimiter As String Dim TargetRange As Range
Set TargetRange = Me.UsedRange ' Users can change target range here delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub On Error Resume Next Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation) If xRng Is Nothing Then Exit Sub Application.EnableEvents = False xValue2 = Target.Value Application.Undo xValue1 = Target.Value If Len(xValue2) Then If Len(xValue1) Then If InStr(1, xValue1, xValue2) Then xValue1 = Replace(xValue1, delimiter & xValue2, "") xValue1 = Replace(xValue1, xValue2 & delimiter, "") xValue1 = Replace(xValue1, xValue2, "") Else xValue1 = xValue1 & delimiter & xValue2 End If Else xValue1 = xValue2 End If End If Target.Value = xValue1
Application.EnableEvents = True On Error GoTo 0 End Sub
Gruß, Uwe
|