Ich habe eine Seite in meiner Arbeitsmappe, in der bestimmte Zellen mehrfach ausgewählt sind. Benutzer können Werte aus einer Dropdown-Liste auswählen und sie anhängen und formatieren, um sie in unser System zu laden. Es funktioniert großartig - aber es gibt nur ein Problem. Es gibt derzeit keine Möglichkeit, einen einzelnen Wert zu entfernen. Wenn ein Benutzer den falschen Wert aus dem Dropdown auswählt, müßte er löschen und neu beginnen. Gibt es eine Möglichkeit, einzelne Werte zu entfernen? Hier ist der aktuelle Multi-Select-Code:VBA: Entfernen von Werten aus einem Mehrfachauswahlfeld
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngDV As Range
Dim oldVal As String
Dim newVal As String
Dim strSep As String
Dim strSep2 As String
Dim header As String
Dim MatchField As Range
Dim AnsType As Range
Application.ScreenUpdating = False
strSep = Chr(34) & "," & Chr(34)
strSep2 = "," & Chr(34)
header = Me.Cells(11, Target.Column).Value
Set MatchField = ThisWorkbook.Worksheets("User Fields").Range("B16:B100").Find(header)
If Not MatchField Is Nothing Then
Set AnsType = MatchField.Offset(0, 2)
End If
Application.EnableEvents = False
On Error Resume Next
If Target.Count > 1 Then GoTo exitHandler
Set rngDV = Cells.SpecialCells(xlCellTypeAllValidation)
On Error GoTo exitHandler
If rngDV Is Nothing Then GoTo exitHandler
If Intersect(Target, rngDV) Is Nothing Then
'do nothing
Else 'cell has data validation
If InStr(1, AnsType, "Multiple") > 0 Then 'Determines if current column corresponds to a multi-select field
newVal = Target.Value
Application.Undo
oldVal = Target.Value
Target.Value = newVal
If newVal = "" Then
'do nothing
Else
If oldVal = "" Then
Target.Value = newVal
ElseIf InStr(1, oldVal, newVal) = 0 Then
If InStr(1, oldVal, Chr(34)) > 0 Then
Target.Value = oldVal & strSep2 & newVal & Chr(34)
Else
Target.Value = Chr(34) & oldVal & strSep & newVal & Chr(34)
End If
Else
Target.Value = oldVal
End If
End If
End If
End If
Application.ScreenUpdating = True
exitHandler:
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
ja, es ist möglich, aber ich konnte nicht schnell herausfinden, wie Ihr Code arbeiten sollte, da ich nicht die ganze Excel-Datei hier habe. Ich habe einen Code wie diesen, aber ich benutze Listbox. Kannst du erklären, wie dein Code funktionieren soll? – Ibo
Dito ... Ich denke, Sie haben Zellen mit Drop-Down-Boxen, und jedes Drop-Down hat verschiedene Elemente. Er kann mehrere Elemente aus verschiedenen Dropdown-Menüs auswählen und diese formatieren und verketten, um sie an ein anderes System zu senden. Recht? Und wenn der Benutzer ein Element aus einer bestimmten Dropdown-Liste auswählt und es an das andere System gesendet wird, soll dieses Element aus dieser Dropdown-Liste entfernt werden. Ist das, was du fragst? –
@JohnMuggins Nicht ganz, aber nah. Auf dieser Seite gibt es ein weiteres Unterelement (selectionchange-Ereignis), mit dem die Datenüberprüfung anhand von Listen auf einer anderen Seite dynamisch angepasst wird. Lassen Sie uns sagen, meine Liste ist Business Units. Wenn ein Client dieses Dropdown in der Zelle verwendet, können sie mehr als eine Geschäftseinheit auswählen. Der Code ermöglicht es ihnen, und es wird es wie "Unit 1", "Unit2" formatieren, die uns ermöglicht, die Daten auf unsere Website hochzuladen. Wir müssen in der Lage sein, Einheit 2 auf irgendeine Weise zu deaktivieren und sie entfernen zu lassen. Direktes Editieren/Löschen funktioniert nicht b/c "Unit 1" ist nicht in der Liste, Unit 1 ist. – Mknerr