Page 1 of 1

Macro: ค้นหา HN แล้วโชว์ค่าใน ListBox

Posted: Tue Jun 23, 2020 4:39 pm
by wisitsakbenz
เรียน สอบถามอาจารย์ครับ

ใส่เลข HN กด Search แล้วให้โชว์ค่า HN ทีั่ต้องการใน ListBox ไม่ทราบว่าต้องปรับ Code อย่างไรครับ ขอบคุณครับ

Re: Macro: ค้นหา HN แล้วโชว์ค่าใน ListBox

Posted: Tue Jun 23, 2020 8:50 pm
by snasui
:D Code นั้นเป็นของเดิมที่ผมเขียนเอาไว้เป็นตัวอย่าง กรุณาปรับใช้กับงานนี้เสียก่อน ติดแล้วค่อยสอบถามกันต่อครับ

ตัวอย่างการใช้ ListFillRange ของ ListBox ศึกษาได้จากที่นี่ครับ https://stackoverflow.com/questions/227 ... tfillrange

Re: Macro: ค้นหา HN แล้วโชว์ค่าใน ListBox

Posted: Thu Jun 25, 2020 9:33 am
by wisitsakbenz
ขอบคุณครับอาจารย์ snasui

Re: Macro: ค้นหา HN แล้วโชว์ค่าใน ListBox

Posted: Thu Jun 25, 2020 11:30 am
by wisitsakbenz
สอบถามเพิ่มเติมคับอาจารย์ snasui

1.ถ้าต้องการให้ Reference No. มาโชว์ ต้องปรับ Code อย่างไรครับ
2.ถ้าต้องการคลิกค่าใน ListBox1 แล้วทำการคลิกปุ่ม Delete ข้อมูลที่คลิก Row ใน Sheet "Data" จะหายไป ต้องปรับ Code อย่างไรครับ ขอบคุณครับ

Code: Select all

Sub Button3_Click()
    Dim i, lastrow As Long
    
    lastrow = Sheets("Data").Range("A" & Rows.Count).End(xlUp).Row
    
    If MsgBox("Are you sure you want to delete the row?", vbYesNo + vbQuestion, "Delete row") = vbYes Then
'Other code
Dim temp As Variant
For i = 1 To lastrow
    If Cells(i, 6) = ListBox1.List(ListBox1.ListIndex) Then
        If Cells(i + 1, 2).Value <> "" Then
            temp = Range(Cells(i + 1, 2), Cells(Rows.Count, 2).End(xlUp)).Resize(, 2)
            Range(Cells(i, 6), Cells(Rows.Count, 3).End(xlUp)).ClearContents
            Cells(i, 6).Resize(UBound(temp, 1), 2).Value = temp
        Else
            Range(Cells(i, 6), Cells(Rows.Count, 3).End(xlUp)).ClearContents
        End If
        Exit For
    End If
Next i
'Other code
    End If
End Sub

Re: Macro: ค้นหา HN แล้วโชว์ค่าใน ListBox

Posted: Thu Jun 25, 2020 11:02 pm
by snasui
:D ผมลองรันแล้วพบว่า Code ยังติดที่บรรทัดนี้ If Cells(i, 6) = ListBox1.List(ListBox1.ListIndex) Then ไม่ทราบว่าต้องการจะทำอะไรก่อนที่จะ Delete กรุณาลำดับการทดสอบมาให้ด้วยจะได้เข้าถึงปัญหาเดียวกัน

ในส่วนของการ Delete ก็ควรจะเขียนมาเองก่อนด้วยครับ

Re: Macro: ค้นหา HN แล้วโชว์ค่าใน ListBox

Posted: Fri Jun 26, 2020 8:53 am
by wisitsakbenz
เรียน อาจารย์ snasui

ช่วยอธิบาย Code นี้หน่อยครับ ว่าคืออะไร พอดีผมไม่ค่อยมีความรู้เรื่อง VBA เท่าไหร่ครับ ขอบคุณครับ

Code: Select all

For i = 1 To lastrow
    If Cells(i, 6) = ListBox1.List(ListBox1.ListIndex) Then
        If Cells(i + 1, 2).Value <> "" Then
            temp = Range(Cells(i + 1, 2), Cells(Rows.Count, 2).End(xlUp)).Resize(, 2)
            Range(Cells(i, 6), Cells(Rows.Count, 3).End(xlUp)).ClearContents
            Cells(i, 6).Resize(UBound(temp, 1), 2).Value = temp
        Else
            Range(Cells(i, 6), Cells(Rows.Count, 3).End(xlUp)).ClearContents
        End If
        Exit For
    End If
Next i
 

Re: Macro: ค้นหา HN แล้วโชว์ค่าใน ListBox

Posted: Fri Jun 26, 2020 3:28 pm
by wisitsakbenz
เรียนอาจารย์ครับ

วิธีการคือ
1.ใส่เลข HN แล้วคลิก Search
2.คลิกข้อมูลที่ต้องการลบ ใน ListBox1
3.คลิกปุ่ม Delete เพื่อต้องการลบข้อมูล

ผมลองปรับ Code แล้ว มันไม่มีอะไรเกิดขึ้น ไม่แน่ใจว่าต้องปรับ Code อย่างไรครับ ขอบคุณครับ

Code: Select all

Private Sub CommandButton1_Click()
    Dim i As Integer
    
    For i = 1 To Sheets("Data").Range("A" & Rows.Count).End(xlUp).Row
    If Cells(i, 1) = ListBox1.List(ListBox1.ListIndex) Then
        Rows(i).Select
        Selection.Delete
    End If
    Next i
End Sub

Re: Macro: ค้นหา HN แล้วโชว์ค่าใน ListBox

Posted: Fri Jun 26, 2020 10:08 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Private Sub CommandButton1_Click()
    Dim i As Integer
    For i = 1 To Sheets("Preview").Range("A" & Rows.Count).End(xlUp).Row
        If Sheets("Preview").Cells(i, 1).Value = ListBox1.List(ListBox1.ListIndex) Then
            Sheets("Preview").Rows(i).EntireRow.Delete
        End If
    Next i
End Sub

Re: Macro: ค้นหา HN แล้วโชว์ค่าใน ListBox

Posted: Sun Jun 28, 2020 1:59 pm
by wisitsakbenz
เรียนอาจารย์ snasui

ได้แล้วครับ ขอบคุณมากเลยครับ