Mehrfachauswahl bei Dropdown Listen für mehrere Spalten
#1
Hallo zusammen,

hoffe, Ihr könnt mir helfen.

Habe eine Excel Tabelle mit mehreren Dropdownlisten (in verschiedenen Spalten) mit einer Mehrfachauswahl, erstellt.

Das funktioniert in der ersten Spalte auch einwandfrei. Wenn ich aber nun in der nächsten Spalte eine Mehrfachauswahl erstelle, dann wird der Inhalt der vorherigen Auswahl mit übernommen, obwohl die Datenübprüfung auf verschiedene Listen zugreift

Als Beispiel: in dieser Tabelle muss man zu erst Wochentage auswählen (Montag, Dienstag, Mittwoch.....) und später Kalenderwochen (1. KW, 2. KW, 3. KW.....) und anschließend Namen (Müller, Meier, Schneider...). Wenn ich jetzt in der ersten Spalte "Montag" auswähle und dann die Kalenderwochen "2. KW" auswählen möchte, übernimmt er erst mal den Wert "Montag" aus der vorigen Spalte  Huh

So habe ich dann in der Kalenderwochenspalte stehen: "Montag, 2. KW"

Wie kann ich nun Excel sagen, dass er in einer neuen Spalte nicht den Wert, der vorher in einer anderen Spalte eingegeben wurde, mit übernehmen soll?

Habe nur VBA-Grundkenntnisse und kann leider keinen Fehler finden.

Da ich hier auf Arbeit bin, kann ich keine Dateien anhängen, daher nachfolgend meinen VBA Code

Const bolSorted As Boolean = True       ' Legt fest, ob die Werte noch sortiert werden.

Dim blockedEvent As Boolean
Dim TargetOldText As String

Private Sub Worksheet_Change(ByVal Target As Range)
   Dim strResult As String
   Dim strTarget As String
   Dim arrSorted As Variant
   Dim i As Long
   If Target.Column = 6 Or Target.Column = 15 Or Target.Column = 18 Or Target.Column = 20 Then
       strTarget = Trim$(Target.Value)
       If Not blockedEvent Then
           blockedEvent = True
           If Not TargetOldText = "" And Not Target.Value = "" Then
               If InStr(1, TargetOldText, Target.Value) > 0 Then
                   strResult = Replace(TargetOldText, ", " & strTarget, "")
                   strResult = Replace(strResult, strTarget & ", ", "")
                   strResult = Replace(strResult, strTarget, "")
               Else
                   strResult = TargetOldText & ", " & Target.Value
               End If
               If bolSorted Then
                   arrSorted = Split(strResult, ", ")
                   strResult = ""
                   Call Selectionsort(arrSorted)
                   For i = 0 To UBound(arrSorted)
                       strResult = strResult & arrSorted(i) & ", "
                   Next i
                   If Len(strResult) > 1 Then _
                   strResult = Left$(strResult, Len(strResult) - 2)
               End If
               Target.Value = strResult
           Else
               Target.Value = Target.Value
           End If
           TargetOldText = Target.Value
       Else
           blockedEvent = False
       End If
   Else
       TargetOldText = ""
   End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   On Error Resume Next
   If Target.Column = TargetColumn Then
       TargetOldText = Target.Value
   End If
End Sub

Private Sub Selectionsort(ByRef data As Variant)

   Dim OG&, i&, j&, k&, h As Variant

   OG = UBound(data)

   For i = 0 To OG - 1
       h = data(i)
       k = i
       For j = i + 1 To OG
           If data(j) < h Then
               h = data(j)
               k = j
           End If
       Next j
       data(k) = data(i)
       data(i) = h
   Next i

End Sub


Wenn Ihr eine Lösung habt, bitte als Antwort hier den korrigierten VBA Code posten, da ich hier im Büro keine Dateien herunterladen kann - lieben Dank im Voraus für Eure Hilfe :)

Viele Grüße
dwarfprincess
Top
#2
Hallöchen,

in Deinem Code ist nicht ersichtlich, was der mit den DropDowns zu tun hat. Ich könnte mir aber vorstellen, dass sich hier was gemerkt wird:
Worksheet_SelectionChange ... TargetOldText = Target.Value

was dann an anderer Stelle für "Verwirrung" sorgt, z.B. hier:

Worksheet_Change... strResult = TargetOldText & ", " & Target.Value

Eventuell reicht bei letzterem
strResult = Target.Value
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste