Em chào Thầy!
Nhờ thầy hướng dẫn em nội dung list conbobox 2 phụ thuộc list combobox 1 cụ thể như sau:
Combobox1 của em lấy giá trị từ sheet1.range("a1:c1")
Combobox2.list:
Nếu combobox1 là a1 thì Combobox2.list = sheet1.range("a2:a10")
Nếu combobox1 là b1 thì Combobox2.list = sheet1.range("b2:b5")
Nếu combobox1 là c1 thì Combobox2.list = sheet1.range("c2:a15")
Nhờ Thầy giúp đỡ ạ
Trân trọng cảm ơn Thầy ạ!
Bạn tạo sự kiện Combobox1_Change nhé, trong đó:
IF Combobox1.Value = "a1" Then
Combobox2.list = sheet1.range("a2:a10")
ElseIF Combobox1.Value = "b1" Then
Combobox2.list = sheet1.range("b2:b5")
Else
Combobox2.list = sheet1.range("c2:a15")
End if
Dạ, em có tùy biến code của thầy để phù hợp với file cụ thể của em:
Private Sub ComboBox1_Change()
If ComboBox1.Value = "J30CABR-B" Then
ComboBox8.List = Sheet6.Range("co2:co23")
ElseIf ComboBox1.Value = "J30CTRR-B" Then
ComboBox8.List = Sheet6.Range("cp2:cp13")
Else
ComboBox8.List = Sheet6.Range("cq2:cq12")
End If
End Sub
Nhưng Sub báo lỗi thầy ạ
Thầy xem lại giúp em nhé!
Mình chưa xem được do link bị hạn chế quyền truy cập.
Lỗi khi trong vùng range tạo list chỉ có 1 nội dung (hoặc không có nội dung gì).
Cần có ít nhất 2 nội dung trong vùng danh sách tạo List nhé.
Private Sub ComboBox1_Change()
If ComboBox1.Value = "J30CABR-B" Then
ComboBox8.List = Sheet6.Range("co2:co23").Value
ElseIf ComboBox1.Value = "J30CTRR-B" Then
ComboBox8.List = Sheet6.Range("cp2:cp13").Value
Else
ComboBox8.List = Sheet6.Range("cq2:cq12").Value
End If
End Sub
Code như trên bạn nhé. Có thêm .Value
Mình góp ý thêm 1 chút cho userform của bạn:
1. chỉnh font chữ cho cả textbox, combobox để đồng bộ font chữ để dễ theo dõi.
2. font size cho các label có thể nhỏ hơn 1 chút để vừa bằng với textbox, combobox (hoặc cho textbox, combobox lớn hơn) => tính thẩm mỹ sẽ cao hơn.
3. Textbox nhập ngày bạn nên đặt định dạng (trong sự kiện AfterUpdate) để giúp việc nhập và ghi nhận ngày chính xác hơn.
4. Nên đặt tên cho các textbox, combobox để dễ theo dõi, đọc code, sửa code.
5. Khi lưu những giá trị dạng ngày thì lưu dạng:
Sheet2.Range("p" & Lr + 1).Value = DateValue(TextBox1)
sẽ chính xác hơn.
6. Bạn thiếu các cấu trúc IF kiểm tra trường hợp nhập thiếu tại những textbox, combobox đánh dấu * (dù có cảnh báo nhưng vẫn cần kiểm soát phòng trường hợp người dùng làm không đúng như quy định)
7. Khi lưu nội dung từ userform vào Sheet xong, bạn chỉ cần tạo 2 lệnh như sau:
Unload Me
Tên_userform.Show
Việc này sẽ giúp load lại userform và tự động xóa sạch các vị trí nhập để nhập mới.
Không nên đặt từng textbox, combobox = "" vừa mất thời gian, vừa dễ bị sai.
Vâng, em cảm ơn thầy nhiều ạ
Chúc thầy sức khỏe, công tác tốt ạ!
Trân trọng!