Hallo,
die Lösung kann auch ohne dynamische Neuerstellung von DropDowns erledigt werden, indem die Regeln direkt auf Zellebene stattfindet:
Der nachstehende VBA-Code muss über den VBA-Editor in die betreffende Tabelle eingefügt werden:
Private Sub Worksheet_Change(ByVal Target As Range)
Static bDo As Boolean
Dim rng As Range
If Not bDo Then
bDo = True
Set rng = Target.Worksheet.Range("A1:A4")
If Not Intersect(rng, Target) Is Nothing Then
Dim rngValA As Range
Dim rngValB As Range
Dim rngValC As Range
Dim rngValD As Range
Set rngValA = rng.Cells(1, 1)
Set rngValB = rng.Cells(2, 1)
Set rngValC = rng.Cells(3, 1)
Set rngValD = rng.Cells(4, 1)
' Regeln
' Ohne Intersect kann die zu ändernde Zelle erneut gesetzt werden !
If Intersect(Target, rngValD) Is Nothing And rngValA = "a" And rngValB = "x" And rngValC = "n" Then
rngValD = "2"
' elseif ....
' Weitere Regeln
End If
End If
bDo = False
End If
End Sub
Erläuterung:
Mit der Statischen Variable bDo wird eine Endlosschleife verhindert, die entsteht, falls innerhalb der Sub eine andere Zelle mit einem neuen Inhalt versehen wird.
In den Variablen rngVal... stehen die zu prüfenden Zellen. In diesem Fall A1 bis A4.
Weitere Regeln können unter elseif eingetragen werden.
VG, BigBen
|