Dùng Dic nạp List cho combobox

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

LuuAnh980

Thành viên tiêu biểu
Tham gia
28/9/22
Bài viết
452
Được thích
104
Giới tính
Nữ
Chào các anh trong DD.
Em có 1 Userform, trong có 1 combobox, em dung Dic để nạp Lít cho Combobox, nhưng cột dữ liệu có cell rỗng, nên list cũng có rỗng. Nhấn ngôi sao hiện Form ạ.
Mong các anh chỉ loại bỏ rỗng dùm ạ.
 

File đính kèm

  • Book1.xlsb
    18.1 KB · Đọc: 8
Thêm điều kiện loại rỗng ra trước khi nạp vào dic là được mà.
 
Upvote 0
Anh @BuiQuangThuan làm giúp em với, em chỉ biết copy code dán vào thôi, code không biết em.
 
Upvote 0
Anh @BuiQuangThuan làm giúp em với, em chỉ biết copy code dán vào thôi, code không biết em.
thêm mấy dòng đo đỏ bên dưới chắc là ok
Mã:
Private Sub UserForm_Initialize()
Dim tmp
With Cb_Job
        .ColumnWidths = "30"
        arr = Sheet1.Range(Sheet1.[A6], Sheet1.[A65536].End(xlUp)).Value
        Set Dic = CreateObject("Scripting.Dictionary")
        For k = 1 To UBound(arr)
            tmp = arr(k, 1)
            If Len(tmp) Then
                If Not Dic.Exists(arr(k, 1)) Then Dic.Add arr(k, 1), ""
            End If
        Next
        .List() = WorksheetFunction.Transpose(Dic.keys)
        Set Dic = Nothing
        .ListIndex = 0
    End With
    
End Sub
 
Upvote 0
Xem coi đúng ý bạn chưa.
 

File đính kèm

  • Book1_Fix.xlsb
    16.7 KB · Đọc: 12
Upvote 0
Trường hợp này không cần transpose keys của Dict đâu. Chỉ khi cần gán dọc xuống sheet mới cần,
Nói thêm: List cũng không cần ()
Mở rộng:
Dic.Keys là mảng 1 chiều (gán xuống sheet sẽ nằm ngang), nhưng Cbbox.List là mảng hai chiều, và Cbbox.List có chỉ số đầu là 0
Chứng minh:
Thêm câu lệnh sau:

Mã:
    Sheet1.[D2].Resize(dic.Count, 1).Value = .List
    Debug.Print UBound(.List, 1), UBound(.List, 2)

Kết quả:
1703002369279.png 1703002411552.png

Nghĩa là khi gán Dic.Keys vào Cbbox.List, VBA đã tự động xoay dọc và biến nó thành mảng 2 chiều.
 
Upvote 0
Bộ não nhanh hơn tay rồi bạn nhé, hai cầu não cần đồng bộ, như vậy thì mới hoàn thành công việc thành công, tư duy được sâu, nhớ lâu. Suy nghĩ cần chậm lại. Suy nghĩ thêm 2 lần nữa cho chắc chắn.
 
Upvote 0
Em nhờ các anh giúp tiếp cho em với ạ.
Trong file em có mô tả ạ.
Em kèm theo hình cho dễ nhìn ạ.loi789456.png
 

File đính kèm

  • Book1.xlsb
    21.2 KB · Đọc: 4
Upvote 0
Em nhờ các anh giúp tiếp cho em với ạ.
Trong file em có mô tả ạ.
Em kèm theo hình cho dễ nhìn ạ.
Bạn vẽ vời ra nhiều thế này xong bạn lại nhờ cả thế này. Mai mốt mà có vấn đề. Thì công sức giúp lại đổ sông đổ bể hết. Bạn cũng chưa chắc đã sửa được ấy.Đơn giản hoá thôi
 
Upvote 0
Thầy @ptm0412 ơi, combobox sau phụ thuộc combobox trước liền kề thì em làm được, còn combobox phụ thuộc 3 combobox trước thì làm sao ạ.
Như Cb_MSP sẽ phụ thuộc Cb_DH, Cb_YC, và Cb_MYC thì làm sao ạ.
 
Upvote 0
Upvote 0
Nhờ các anh giúp em code làm combobox phụ thuộc vào từ 2 đến 3 combobox trở lên ạ.
Ví dụ trong file này, nếu chọn Cb_DH là AA, Cb_YC là 01 thì Cb_MYC là B2P1 thôi. Chứ không có B1P1.
Vì đơn hàng AA có 2 yêu cầu là: 01 và 02, và chỉ có 1 mã yêu cầu là: B2P1.
Nhờ thầy Mỹ giúp code, không xài name ạ.
 

File đính kèm

  • Book1.xlsb
    24 KB · Đọc: 3
Upvote 0
Nhờ các anh giúp em code làm combobox phụ thuộc vào từ 2 đến 3 combobox trở lên ạ.
Ví dụ trong file này, nếu chọn Cb_DH là AA, Cb_YC là 01 thì Cb_MYC là B2P1 thôi. Chứ không có B1P1.
Vì đơn hàng AA có 2 yêu cầu là: 01 và 02, và chỉ có 1 mã yêu cầu là: B2P1.
Nhờ thầy Mỹ giúp code, không xài name ạ.
Nếu dữ liệu nhất định không sắp xếp lại (như tỉnh huyện xã) thì tôi không làm. Thậm chí không làm được.
 
Upvote 0
Là sao em không hiểu thầy Mỹ, giống như vầy hả thầy Mỹ:
loi158753.png
 
Upvote 0
Là sao em không hiểu thầy Mỹ, giống như vầy hả thầy Mỹ:
Đã vậy dữ liệu lại không chuẩn. Tại sao mã yêu cầu giống nhau mà tên yêu cầu khác nhau? Tại sao khác đơn hàng mà lại cùng mã yêu cầu? Tại sao cùng mã yêu cầu mà mã SP lại khác nhau ở đơn hàng khác nhau?

Dữ liệu chuẩn:
- mã đơn hàng duy nhất
- Cùng mã đơn hàng có thể nhiều mã yêu cầu, mã yêu cầu không trùng ở những đơn hàng khác nhau.
- 1 mã yêu cầu chỉ 1 tên yêu cầu. Nếu không phải tên mà là số thứ tự yêu cầu thì có thể trùng, nhưng không cần combobox riêng.
- 1 yêu cầu có thể nhiều SP. Một sản phẩm chỉ 1 mã và không trùng, có thể có chuối a chuối b, nhưng phải là 2 mã khác nhau.
- Nếu TAO001 luôn luôn là táo thì tên SP không cần combobox riêng
 
Upvote 0
Dữ liệu chuẩn hóa và sắp xếp như sau (mặt hàng Táo lúc thì Táo (lê) lúc thì Tao (mày). .

1703173230329.png

Form chỉ có 3 combobox và 2 textbox, 2 textbox này tự chạy.

1703173375564.png

Sắp xếp và trùng tè le như cũ cũng có thể làm được nhưng tôi không làm
 

File đính kèm

  • DependentCombobox.xlsm
    25.3 KB · Đọc: 14
Upvote 0
Dữ liệu đó là thực tế của công ty em đó thầy. Em chỉ đổi tên một số tiêu đề. Còn Táo với Tao, là do chữ Tao em gõ thiếu dấu sắc. Là Táo hết thầy ạ.
Có thể trùng DH, trùng YC nhưng khác MYC
Hoặc trùng DH, trùng MYC nhưng khác YC, chứ không bao giờ trùng cả 3 DH, YC, MYC.
Mong Thày Mỹ xem giúp.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom