Code lọc theo điều kiện trên form

Liên hệ QC

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!
 

File đính kèm

  • hoiGPE.rar
    121 KB · Đọc: 56
Mọ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ư.
 
Upvote 0
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!

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
 
Lần chỉnh sửa cuối:
Upvote 0
Mọ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ư.
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ôi
Dạng này có đầy trên GPE rồi ---> Tìm đi
 
Upvote 0
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

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?
 
Upvote 0
Một cách khác nữa là thay vì dữ liệu có cấu trúc gồm 3 bảng tra giống như của bạn, tôi đổi cấu trúc nó về thành 1 bảng. Như vậy thì dữ liệu sẽ tổng quát hơn, với các code như sau:

Mã:
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
 

File đính kèm

  • hoiGPE.rar
    125.5 KB · Đọc: 178
Upvote 0
Web KT
Back
Top Bottom