Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim arr, Item, dic As Object, tmp As String
On Error Resume Next
If Not Intersect(Union([COLOR=#ff0000][B][B1:B60], [D1:D60], [F1:F60], [H1:H60], [J1:J60][/B][/COLOR],[COLOR=#0000cd] [B][L1:L60], [N1:N60], [P1:P60], [R1:R60], [T1:T60], [V1:V60], [X1:X60], [Z1:Z60], [AB1:AB60], [AD1:AD60], [AF1:AF60], [AH1:AH60], [AJ1:AJ60], [AL1:AL60], [AN1:AN60], [AP1:AP60], [AR1:AR60], [AT1:AT60], [AV1:AV60], [AX1:AX60], [AZ1:AZ60], [BB1:BB60], [BD1:BD60], [BF1:BF60], [BH1:BH60], [BJ1:BJ60], [BL1:BL60], [BN1:BN60], [BP1:BP60], [BR1:BR60], [BT1:BT60][/B][/COLOR]), Target) Is Nothing Then
If Target.Count = 1 Then
arr = Sheet1.Range("A1:A10000").Value
Set dic = CreateObject("Scripting.Dictionary")
For Each Item In arr
tmp = CStr(Item)
If Len(tmp) Then
If Not dic.Exists(tmp) Then dic.Add tmp, ""
End If
Next
With Target.Validation
.Delete
If dic.Count Then .Add 3, , , Join(dic.Keys, ",")
End With
End If
End If
End Sub