Page 1 of 1

ค้นหารายการสินค้าจากTextBoxแล้วนำรายการสินค้ามาแสดงที่ListBox

Posted: Sat Oct 28, 2017 10:23 pm
by kio2002
ที่ procedure Private Sub TextBox1_Change()
ผมต้องการค้นหารายการสินค้าที่ textbox1 รายการสินค้าที่ต้องการให้เริ่มค้นหาอยู่ที่เซลล์ M15 ลงมา
แล้วนำรายการสินค้ามาแสดงที่ listbox1
สมมุติ พิมพ์คำว่า "ส้ม" ก็ให้นำรายการสินค้าที่มีคำว่า ส้ม มาแสดงที่ listbox1
ตอนนี้ติดปัญหาที่ พิมพ์ชื่อรายการสินค้าไปแล้ว listbox1 ไม่แสดงผล
ขอบคุณครับ

Code: Select all

Private Sub TextBox1_Change()
Dim i As Long
TextBox1.Text = StrConv(TextBox1.Text, vbProperCase)
ListBox1.Clear
For i = 15 To Application.WorksheetFunction.CountA(Sheet1.Range("M:M"))
M = Len(TextBox1.Text)
If Left(Sheet1.Cells(i, 13).Value, M) = Left(TextBox1.Text, M) Then
ListBox1.AddItem Sheet1.Cells(i, 13).Value
ListBox1.List(ListBox1.ListCount - 1, 13) = Sheet1.Cells(i, 13).Value
End If
Next i
End Sub

Re: ค้นหารายการสินค้าจากTextBoxแล้วนำรายการสินค้ามาแสดงที่ListBox

Posted: Sat Oct 28, 2017 11:05 pm
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

Private Sub CommandButton1_Click()
    Dim r As Long
    With Sheets("sheet1")
        For r = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(r) Then
                .Range("C" & .Rows.Count).End(xlUp).Offset(1, 0).Value = ListBox1.List(r)
            End If
        Next r
    End With
End Sub

Private Sub TextBox1_Change()
    Dim r As Range, rAll As Range
    If TextBox1.Text <> "" Then
        ListBox1.Clear
        With Sheets("Sheet1")
            Set rAll = .Range("m15", .Range("m" & .Rows.Count).End(xlUp))
        End With
        For Each r In rAll
            M = Len(TextBox1.Text)
            If Left(r.Value, M) = Left(TextBox1.Text, M) Then
                ListBox1.AddItem r.Value
            End If
        Next r
    End If
End Sub

Re: ค้นหารายการสินค้าจากTextBoxแล้วนำรายการสินค้ามาแสดงที่ListBox

Posted: Sun Oct 29, 2017 3:00 pm
by kio2002
เรียนอาจารย์ครับ ที่ procedure Private Sub TextBox1_Change() ได้ตามที่ต้องการแล้วครับ

แต่ยังติดตรง precedure Private Sub CommandButton1_Click()
ผมต้องการให้ส่งรายการสินค้าที่เลือกจาก listbox1 เริ่มส่งไปยังเซลล์ C15 และลงมาเรื่อยๆ
แต่ตอนนี้มันส่งรายการสินค้าไปแค่ที่เซลล์ C15 และ C16 เท่านั้น เซลล์C17 ลงมา มันไม่ยอมส่ง

Code: Select all

Private Sub CommandButton1_Click()
    Dim r As Long
    With Sheets("sheet1")
        For r = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(r) Then
                .Range("C15").Offset(Application.CountA(.Range("C15:c" & .Rows.Count).End(xlUp).Offset(1, 0))).Value = ListBox1.List(r)
            End If
        Next r
    End With
End Sub

Re: ค้นหารายการสินค้าจากTextBoxแล้วนำรายการสินค้ามาแสดงที่ListBox

Posted: Sun Oct 29, 2017 3:07 pm
by snasui
:D Code ที่ผมปรับไปติดปัญหาตรงไหน อย่างไร ช่วยนำไปทดสอบแล้วแจ้งที่เป็นปัญหา จะได้ตอบต่อไปจากนั้นครับ

Re: ค้นหารายการสินค้าจากTextBoxแล้วนำรายการสินค้ามาแสดงที่ListBox

Posted: Sun Oct 29, 2017 6:49 pm
by kio2002
ขออภัยครับ ผมนำไปใช้แล้ว แต่ลืมแจ้งครับ
codeของอาจารย์ กดปุ่มบันทึกแล้ว เริ่มส่งรายการสินค้าไปยังเซลล์ C48 ลงมาเรื่อยๆ
ผมอยากให้เริ่มส่งรายการสินค้าไปยังเซลล์ C15 เป็นอันดับแรก และลงมาเรื่อยๆจนถึงเซลล์ที่กำหนด คือเซลล์ C25 ครับ
แต่หากบันทึกรายการสินค้าถึงเซลล์ C26 อยากให้แสดง MsgBox และจบคำสั่งครับ
ที่ต้องการประมาณนี้ครับ

Re: ค้นหารายการสินค้าจากTextBoxแล้วนำรายการสินค้ามาแสดงที่ListBox

Posted: Wed Nov 01, 2017 8:26 am
by kio2002
snasui wrote::D Code ที่ผมปรับไปติดปัญหาตรงไหน อย่างไร ช่วยนำไปทดสอบแล้วแจ้งที่เป็นปัญหา จะได้ตอบต่อไปจากนั้นครับ
ขออภัยครับ ผมนำไปใช้แล้ว แต่ลืมแจ้งครับ
codeของอาจารย์ กดปุ่มบันทึกแล้ว เริ่มส่งรายการสินค้าไปยังเซลล์ C48 ลงมาเรื่อยๆ
ผมอยากให้เริ่มส่งรายการสินค้าไปยังเซลล์ C15 เป็นอันดับแรก และลงมาเรื่อยๆจนถึงเซลล์ที่กำหนด คือเซลล์ C25 ครับ
แต่หากบันทึกรายการสินค้าถึงเซลล์ C26 อยากให้แสดง MsgBox และจบคำสั่งครับ
ที่ต้องการประมาณนี้ครับ

Re: ค้นหารายการสินค้าจากTextBoxแล้วนำรายการสินค้ามาแสดงที่ListBox

Posted: Wed Nov 01, 2017 3:42 pm
by logic
ลองดูว่าใช้ได้ไหมครับ

Code: Select all

Private Sub CommandButton1_Click()
    Dim r As Long
    With Sheets("sheet1")
        If .Range("c25").Value <> "" Then
            MsgBox "Not record"
            Exit Sub
        End If
        For r = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(r) Then
                .Range("C26").End(xlUp).Offset(1, 0).Value = ListBox1.List(r)
            End If
        Next r
    End With
End Sub

Re: ค้นหารายการสินค้าจากTextBoxแล้วนำรายการสินค้ามาแสดงที่ListBox

Posted: Mon Nov 06, 2017 8:03 pm
by kio2002
แบนี้แหละครับที่ต้องการ ได้ความรู้ใหม่ สามารถใช้ Exit sub ออกจากคำสั่งได้ก่อนจบ procedure ได้ด้วย
ขอบคุณอาจารย์ และสมาชิก logic มากๆครับ
จะเอาไปปรับใช้ หากติดตรงไหน จะมาสอบถามเพิ่มครับ

Re: ค้นหารายการสินค้าจากTextBoxแล้วนำรายการสินค้ามาแสดงที่ListBox

Posted: Wed Nov 14, 2018 9:27 pm
by kio2002
สอบถามสมาชิกทุกท่านครับ
Listbox กรณีที่มีสินค้าเยอะๆ มันจะขึ้น scroll bar มาให้ มีวิธีที่ทำให้ใช้ลูกกลิ้งเม้าท์เลื่อนขึ้น เลื่อนลงได้ไหมครับ
ตามรูปแนบครับ ขอบคุณครับ

Re: ค้นหารายการสินค้าจากTextBoxแล้วนำรายการสินค้ามาแสดงที่ListBox

Posted: Thu Nov 15, 2018 9:48 pm
by snasui
:D คงต้องพึ่ง Windows API ลองดู LInk ย่อยใน Link ด้านล่างนี้เป็นตัวอย่างครับ

https://www.google.co.th/search?rlz=1C1 ... MnutQVLkDo