Hỗ trợ bạn tạo datavalidation Đại lý, bận quá nên chưa viết tiếp được.Chào các anh chị
Em có một danh sách phụ thuộc vào hai danh sách khác, yêu cầu sử dụng code vba để khi chọn một giá trị trong danh sách thì sẽ hiển thị các kết quả tương ứng
Trong file đính kèm có mô tả cụ thể, nhờ các anh chị trợ giúp em code với ạ, em cảm ơn
View attachment 248007
Option Explicit
Sub Add_Valdn()
Dim sArr(), dList(), Dic As Object, Key As Variant, I As Long, R As Long, L As Long
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("MENU")
sArr = .Range("B2", .Range("B65000").End(xlUp).Offset(, 2)).Value
R = UBound(sArr, 1)
For I = 1 To R
If .Range("G1") = sArr(I, 1) And Not Dic.exists(sArr(I, 2)) Then
ReDim Preserve dList(L)
Dic.Add (sArr(I, 2)), ""
dList(L) = sArr(I, 2): L = L + 1
End If
Next
With .Range("G2").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:=Join(dList, ",")
End With
End With
End Sub
Em cảm ơn bác nhiều ạ, có thời gian nhờ bác trợ giúp em phần đó với ạHỗ trợ bạn tạo datavalidation Đại lý, bận quá nên chưa viết tiếp được.
Chỗ trái cây thì vào module sheet change viết cũng nhanh thôi
PHP:Option Explicit Sub Add_Valdn() Dim sArr(), dList(), Dic As Object, Key As Variant, I As Long, R As Long, L As Long Set Dic = CreateObject("Scripting.Dictionary") With Sheets("MENU") sArr = .Range("B2", .Range("B65000").End(xlUp).Offset(, 2)).Value R = UBound(sArr, 1) For I = 1 To R If .Range("G1") = sArr(I, 1) And Not Dic.exists(sArr(I, 2)) Then ReDim Preserve dList(L) Dic.Add (sArr(I, 2)), "" dList(L) = sArr(I, 2): L = L + 1 End If Next With .Range("G2").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:=Join(dList, ",") End With End With End Sub
Bạn xem fileAnh @Nhattanktnn giúp em nốt phần đó với anh nhé
File đúng như yêu cầu rồi, em cảm ơn anh rất nhiều ạBạn xem file