huongmuine
Thành viên GPE
- Tham gia
- 27/5/10
- Bài viết
- 225
- Được thích
- 32
- Giới tính
- Nam
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$3" Then
Range("C3").Validation.Delete
Dim sArr(), dVa As Long, Dic As Object, CtD As Long
Set Dic = CreateObject("Scripting.Dictionary")
sArr = Sheet1.Range("A3:A" & Sheet1.Range("A65535").End(xlUp).Row)
For dVa = 1 To UBound(sArr)
If UCase(sArr(dVa, 1)) Like "*" & UCase(Target.Value) & "*" Then
If Not Dic.Exists(sArr(dVa, 1)) Then
CtD = CtD + 1
Dic.Add sArr(dVa, 1), CtD
End If
End If
Next dVa
If CtD Then
With Range("C3").Validation
.Delete
.Add xlValidateList, , , Join(Dic.Keys, ",")
.ShowError = False
End With
End If
Set Dic = Nothing
End If
End Sub
Rất cảm ơn bạn. Kết quả như mình mong muốn.Bạn tham khảo code sau:
Mã:Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$3" Then Range("C3").Validation.Delete Dim sArr(), dVa As Long, Dic As Object, CtD As Long Set Dic = CreateObject("Scripting.Dictionary") sArr = Sheet1.Range("A3:A" & Sheet1.Range("A65535").End(xlUp).Row) For dVa = 1 To UBound(sArr) If UCase(sArr(dVa, 1)) Like "*" & UCase(Target.Value) & "*" Then If Not Dic.Exists(sArr(dVa, 1)) Then CtD = CtD + 1 Dic.Add sArr(dVa, 1), CtD End If End If Next dVa If CtD Then With Range("C3").Validation .Delete .Add xlValidateList, , , Join(Dic.Keys, ",") .ShowError = False End With End If Set Dic = Nothing End If End Sub
Nếu trường hợp tên tìm kiếm cho chứa dấu "," thì phương án trên không được rồi anh.Bạn tham khảo code sau:
Mã:Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$3" Then Range("C3").Validation.Delete Dim sArr(), dVa As Long, Dic As Object, CtD As Long Set Dic = CreateObject("Scripting.Dictionary") sArr = Sheet1.Range("A3:A" & Sheet1.Range("A65535").End(xlUp).Row) For dVa = 1 To UBound(sArr) If UCase(sArr(dVa, 1)) Like "*" & UCase(Target.Value) & "*" Then If Not Dic.Exists(sArr(dVa, 1)) Then CtD = CtD + 1 Dic.Add sArr(dVa, 1), CtD End If End If Next dVa If CtD Then With Range("C3").Validation .Delete .Add xlValidateList, , , Join(Dic.Keys, ",") .ShowError = False End With End If Set Dic = Nothing End If End Sub