- Tham gia
- 17/8/08
- Bài viết
- 8,662
- Được thích
- 16,718
- Giới tính
- Nam
Xin anh cho một bài ví dụ bằng SheetForm được không anh Nghĩa
Hình này là tôi thiết kế 1 cái form, khi form show nó load Nhóm hàng 3 cấp (đã được lọc duy nhất) và load Nhóm ký tự cũng đã được lấy ra từ Sheet ma co san.
Khi form show, bạn chỉ việc chọn Nhóm hàng nào cần đặt mã hàng mới, nó sẽ tự động lọc danh sách Tên hàng tương ứng với nhóm hàng. Tiếp theo bạn chọn Nhóm ký tự của Tên hàng này thì ngay sau đó Mã hàng mới sẽ có một danh sách mã hàng còn thiếu để bạn chọn.
Tôi chỉ có thể hướng dẫn thực hiện trên form tới đây, những việc khác tôi không làm.
Mã:
Private shMaCoSan As Worksheet, shNguon As Worksheet
Private Sub UserForm_Initialize()
Dim e As Long
Set shMaCoSan = Sheets("ma co san")
Set shNguon = Sheets("NGUON")
e = shNguon.Range("D" & Rows.Count).End(xlUp).Row
ComboBox1.List = shNguon.Range("D2:D" & e).Value
e = shNguon.Range("A" & Rows.Count).End(xlUp).Row
ComboBox3.List = shNguon.Range("A2:B" & e).Value
End Sub
Private Sub ComboBox1_Change()
ComboBox2.Text = ""
ComboBox3.Text = ""
ComboBox4.Text = ""
TextBox1.Text = ""
If ComboBox1.MatchFound Then
Dim strNhomHang As String
Dim arrTenHang, arrGetRows()
Dim e As Long, n As Long, r As Long
strNhomHang = LCase(ComboBox1.Text)
e = shNguon.Range("H" & Rows.Count).End(xlUp).Row
arrTenHang = shNguon.Range("G2:H" & e).Value
For r = 1 To UBound(arrTenHang)
If LCase(arrTenHang(r, 1)) = strNhomHang Then
n = n + 1
ReDim Preserve arrGetRows(1 To n)
arrGetRows(n) = arrTenHang(r, 2)
End If
Next
If n Then
ComboBox2.List = arrGetRows
End If
End If
End Sub
Private Sub ComboBox3_Change()
ComboBox4.Text = ""
ComboBox4.Clear
If ComboBox3.MatchFound Then
Dim e As Long
Dim arrMaHang
e = shMaCoSan.Range("A" & Rows.Count).End(xlUp).Row
arrTenHang = shMaCoSan.Range("A2:A" & e).Value
arrMaHang = FindShortageID(shMaCoSan.Range("A2:A" & e), ComboBox3.Text, ComboBox3.List(, 1))
ComboBox4.List = arrMaHang
End If
End Sub
File đính kèm
Lần chỉnh sửa cuối: