Hallo,
Ik heb in een lijst kolommen waarin met behulp van een keuzelijst en gegevensvalidatie meerdere keuzes per cel gemaakt kunnen worden. Een VBA code heb ik hier al gevonden en deze werkt goed. Het enige probleem is dat ik nu bij meerdere keuzes een foutmelding (rood driehoekje in de linker bovenhoek van de cel) krijg dat de invoer niet voldoet aan de validatieregels. Iemand een idee hoe ik dit kan oplossen?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngDV As Range
Dim oldVal As String
Dim newVal As String
Dim lUsed As Long
If Target.Count > 1 Then GoTo exitHandler
On Error Resume Next
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
Application.EnableEvents = False
newVal = Target.Value
Application.Undo
oldVal = Target.Value
Target.Value = newVal
If Target.Column = 19 Or 20 Or 21 Then
If oldVal = "" Then
'do nothing
Else
If newVal = "" Then
'do nothing
Else
lUsed = InStr(1, oldVal, newVal)
If lUsed > 0 Then
If Right(oldVal, Len(newVal)) = newVal Then
Target.Value = Left(oldVal, Len(oldVal) - Len(newVal) - 2)
Else
Target.Value = Replace(oldVal, newVal & ", ", "")
End If
Else
Target.Value = oldVal _
& ", " & newVal
End If
End If
End If
End If
End If
exitHandler:
Application.EnableEvents = True
Columns("S:U").EntireColumn.AutoFit
End Sub
Alvast bedankt voor het meedenken.
Met vriendelijke groet,
Hans
Ik heb in een lijst kolommen waarin met behulp van een keuzelijst en gegevensvalidatie meerdere keuzes per cel gemaakt kunnen worden. Een VBA code heb ik hier al gevonden en deze werkt goed. Het enige probleem is dat ik nu bij meerdere keuzes een foutmelding (rood driehoekje in de linker bovenhoek van de cel) krijg dat de invoer niet voldoet aan de validatieregels. Iemand een idee hoe ik dit kan oplossen?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngDV As Range
Dim oldVal As String
Dim newVal As String
Dim lUsed As Long
If Target.Count > 1 Then GoTo exitHandler
On Error Resume Next
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
Application.EnableEvents = False
newVal = Target.Value
Application.Undo
oldVal = Target.Value
Target.Value = newVal
If Target.Column = 19 Or 20 Or 21 Then
If oldVal = "" Then
'do nothing
Else
If newVal = "" Then
'do nothing
Else
lUsed = InStr(1, oldVal, newVal)
If lUsed > 0 Then
If Right(oldVal, Len(newVal)) = newVal Then
Target.Value = Left(oldVal, Len(oldVal) - Len(newVal) - 2)
Else
Target.Value = Replace(oldVal, newVal & ", ", "")
End If
Else
Target.Value = oldVal _
& ", " & newVal
End If
End If
End If
End If
End If
exitHandler:
Application.EnableEvents = True
Columns("S:U").EntireColumn.AutoFit
End Sub
Alvast bedankt voor het meedenken.
Met vriendelijke groet,
Hans