Hallo Zusammen,
ich erlaube meinen Benutzern die Mehrfachauswahl von Werten aus einer Dropdown-Liste. Die jeweiligen Werte werden in die Zelle mit der Auswahl geschrieben. Die Vorlage dafür stamm von Excel Inside und sieht etwa so aus:
Das Ganze hat leider zwei Schwächen:
- es ist möglich, die Werte aus dem Dropdown in C1 doppelt auszuwählen, wobei sie dann auch doppelt in die Zelle geschrieben werden
- es ist nicht möglich, Werte durch eine erneute Auswahl aus dem Dropdown in C1 abzuwählen und entsprechend aus der Zelle zu löschen
Ich habe hier schon eine ganze Menge probiert und es wäre sicher möglich, das ganze in einen String zu laden und dann zu löschen und neu zu sortieren. Das Problem dann ist nur, dass ich den Wert wieder in die Zelle schreiben müsste, was das Change Event erneut auslöst.
Die Ideallösung wäre also, dem o.a. Programm mitzugeben, dass es prüfen soll, ob der Wert schon in Zelle vorhanden ist, und ihn dann löschen, anstatt zu ergänzen.
Hat da jemand eine Idee?
Buddy
ich erlaube meinen Benutzern die Mehrfachauswahl von Werten aus einer Dropdown-Liste. Die jeweiligen Werte werden in die Zelle mit der Auswahl geschrieben. Die Vorlage dafür stamm von Excel Inside und sieht etwa so aus:
Visual Basic-Quellcode
- Private Sub Worksheet_Change(ByVal Target As Range)
- '** Mehrfachauswahl über DropDown-Liste (Gültigkeitsprüfung)
- '** Einfügen im Code-Container des betreffenden Arbeitsblattes
- '** Dimensionierung der Variablen
- Dim rngDV As Range
- Dim wertold As String
- Dim wertnew As String
- '** Errorhandling
- On Error GoTo Errorhandling
- '** Mehrfachauswahl im definierten Bereich (Bsp. C1) durchführen
- If Not Application.Intersect(Target, Range("C1")) Is Nothing Then
- '**Range definieren
- Set rngDV = Target.SpecialCells(xlCellTypeAllValidation)
- If rngDV Is Nothing Then GoTo Errorhandling
- '** Prüfen, ob eine gültige Zelle ausgewählt wurde und Werte eintragen
- If Not Application.Intersect(Target, rngDV) Is Nothing Then
- Application.EnableEvents = False
- wertnew = Target.Value
- Application.Undo
- wertold = Target.Value
- Target.Value = wertnew
- If wertold <> "" Then
- If wertnew <> "" Then
- Target.Value = wertold & ", " & wertnew
- End If
- End If
- End If
- Application.EnableEvents = True
- End If
- Errorhandling:
- Application.EnableEvents = True
- End Sub
Das Ganze hat leider zwei Schwächen:
- es ist möglich, die Werte aus dem Dropdown in C1 doppelt auszuwählen, wobei sie dann auch doppelt in die Zelle geschrieben werden
- es ist nicht möglich, Werte durch eine erneute Auswahl aus dem Dropdown in C1 abzuwählen und entsprechend aus der Zelle zu löschen
Ich habe hier schon eine ganze Menge probiert und es wäre sicher möglich, das ganze in einen String zu laden und dann zu löschen und neu zu sortieren. Das Problem dann ist nur, dass ich den Wert wieder in die Zelle schreiben müsste, was das Change Event erneut auslöst.
Die Ideallösung wäre also, dem o.a. Programm mitzugeben, dass es prüfen soll, ob der Wert schon in Zelle vorhanden ist, und ihn dann löschen, anstatt zu ergänzen.
Hat da jemand eine Idee?
Buddy