bebeen
Thành viên thường trực
- Tham gia
- 13/2/12
- Bài viết
- 213
- Được thích
- 24
Gửi AC trên GPE!
Em có 1 ví dụ xử lý Form như file đính kèm. Em đưa file lên đây nhờ AC xem và viết dùm em ít code để có thể chọn như mong muốn ở trong file đính kèm của em.
Cám ơn nhiều!
Private Sub ComboBox1_Change()
On Error GoTo Loi
If ComboBox1 = "" Then
Label1.Caption = ""
Else
Label1.Caption = ComboBox1.Column(1)
With Sheets("VIDU")
Select Case ComboBox1.ListIndex
Case 0
ComboBox2.List = Range(.[C1], .[C65536].End(xlUp)).Resize(, 2).Value
Case 1
ComboBox2.List = Range(.[E1], .[E65536].End(xlUp)).Resize(, 2).Value
Case 2
ComboBox2.List = Range(.[G1], .[G65536].End(xlUp)).Resize(, 2).Value
End Select
ComboBox2 = ""
Label3.Caption = ""
End With
End If
Exit Sub
Loi:
Label1.Caption = "Mã hàng không có!"
End Sub
Private Sub ComboBox2_Change()
On Error GoTo Loi
If ComboBox2 = "" Then
Label3.Caption = ""
Else
Label3.Caption = ComboBox2.Column(1)
End If
Exit Sub
Loi:
Label3.Caption = "Sai mã hàng!"
End Sub
Nói cho cùng thì đây cũng chỉ là bài toán LỌC DỮ LIỆU THEO ĐIỀU KIỆN... Dù là lọc trên Form hay trên sheet thì cũng vậy thôi: Lọc trên sheet, sau khi có kết quả ta đặt dữ liệu vào sheet còn lọc trên Form thì kết quả cho vào Form. Thế thôiMọi người xem dùm cho em với. Em đang lập 1 chương trình nhập xuất vật tư.
Bạn thử dùng code này, với 3 nhóm hàng thì như vầy là tạm ổn:
PHP:Private Sub ComboBox1_Change() On Error GoTo Loi If ComboBox1 = "" Then Label1.Caption = "" Else Label1.Caption = ComboBox1.Column(1) With Sheets("VIDU") Select Case ComboBox1.ListIndex Case 0 ComboBox2.List = Range(.[C1], .[C65536].End(xlUp)).Resize(, 2).Value Case 1 ComboBox2.List = Range(.[E1], .[E65536].End(xlUp)).Resize(, 2).Value Case 2 ComboBox2.List = Range(.[G1], .[G65536].End(xlUp)).Resize(, 2).Value End Select ComboBox2 = "" Label3.Caption = "" End With End If Exit Sub Loi: Label1.Caption = "Mã hàng không có!" End Sub Private Sub ComboBox2_Change() On Error GoTo Loi If ComboBox2 = "" Then Label3.Caption = "" Else Label3.Caption = ComboBox2.Column(1) End If Exit Sub Loi: Label3.Caption = "Sai mã hàng!" End Sub
Option Explicit
Private Sub UserForm_Initialize()
ComboBox1.List = Range(Sheets("NGUON").[F2], Sheets("NGUON").[F65536].End(xlUp)).Resize(, 2).Value
End Sub
Private Sub ComboBox1_Change()
If ComboBox1 = "" Then Label1.Caption = "": GoTo Loi
Dim sArray As Variant, ListArr As Variant
Dim h As Long, i As Long, r As Long: r = 0
Dim Rng As Range
Set Rng = Range(Sheets("NGUON").[A2], Sheets("NGUON").[A65536].End(xlUp))
sArray = Rng.Resize(, 3).Value
i = Application.WorksheetFunction.CountIf(Rng, ComboBox1)
ComboBox2 = "": Label3.Caption = ""
If i > 0 Then
ReDim ListArr(1 To i, 1 To 2)
For h = 1 To UBound(sArray)
If sArray(h, 1) = ComboBox1 Then
r = r + 1
ListArr(r, 1) = sArray(h, 2)
ListArr(r, 2) = sArray(h, 3)
End If
Next
ComboBox2.List = ListArr
Label1.Caption = ComboBox1.Column(1)
Else
Label1.Caption = "Mã hàng không có!"
Loi:
ComboBox2.Clear
End If
End Sub
Private Sub ComboBox2_Change()
On Error GoTo Loi
If ComboBox2 = "" Then
Label3.Caption = ""
Else
Label3.Caption = ComboBox2.Column(1)
End If
Exit Sub
Loi:
Label3.Caption = "Sai mã hàng!"
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Anh ơi, nếu em muốn khi click chuột vào combobox 2 thì nó sẽ hiện cả mã hàng và tên hàng nữa?
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2