Announcement

Collapse

ยินดีต้อนรับสู่ Excel Expert Training Forum

กฏกติกาของฟอรัม: แจ้งชื่อและนามสกุลจริงในการสมัครสมาชิก - ตั้งชื่อกระทู้ให้ตรงกับปัญหาที่ถาม - เขียนอธิบายคำถามทั้งในตัวกระทู้และในแฟ้มแนบ - ห้ามใช้คำว่า อ่ะ คับ คำผวน - ตั้งชื่อแฟ้มเป็นภาษาอังกฤษให้สื่อถึงปัญหา - อย่าระบุชื่อให้คนใดเป็นผู้ตอบ - งดให้ความร่วมมือหรือช่วยกระทู้ที่ละเมิดกฏของฟอรัม
See more
See less

VBA Search

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • VBA Search

    สูตรช่วงนี้คิดไม่ออกครับ ใช้ Find หรือฟังชั่นอะไรได้บ้าง
    ถ้าพิมข้อความใน Textbox1 ให้หาที่ละ Row ว่า
    ถ้ามีให้ข้อความของ Textbox1 ใน Row นั้นให้ Show แถวนั้นเข้าไปใน Listbox1
    ถ้าไม่มีให้ข้ามไป

    ผมลองหลายครั้งแล้วพยายามมาก ก็ยังไม่เข้าใจ .Find
    รบกวนด้วยครับ หรือขอตัวอย่างการเขียนที่ดีก็ได้ครับ
    ผมอยู่ในช่วงฝึก อย่างตั้งใจมากครับ
    ยกตัวอย่าง

    1.สมมุติว่า พิมพ์ข้อความ ว่า CAT05 ใน Textbox1

    2.ผลลัพธ์ที่ต้องการตามภาพ




    Code:
    Private Sub TextBox1_Change()
    
    Dim irow As Integer
    Dim Uniontext As String
    lastCol = ActiveSheet.Range("b1").End(xlToRight).Column
    lastrow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
    
    For irow = 2 To lastrow
    
    
    Uniontext = ActiveSheet.Cells(irow, 2).Text & _
    ActiveSheet.Cells(irow, 3).Text & _
    ActiveSheet.Cells(irow, 4).Text & _
    ActiveSheet.Cells(irow, 5).Text & _
    ActiveSheet.Cells(irow, 6).Text & _
    ActiveSheet.Cells(irow, 7).Text & _
    ActiveSheet.Cells(irow, 8).Text & _
    ActiveSheet.Cells(irow, 9).Text
    
    MsgBox Uniontext  'คือผมรวมคำเพื่อค้นหาครับ
    
    'สูตรช่วงนี้คิดไม่ออกครับ  ใช้ Find หรือฟังชั่นอะไรได้บ้าง
    'ถ้าพิมข้อความใน Textbox1 ให้หาที่ละ Row ว่า
    'ถ้ามีให้ข้อความของ Textbox1 ใน Row นั้นให้ Show แถวนั้นเข้าไปใน Listbox1
    'ถ้าไม่มีให้ข้ามไป
    
    Next irow
    
    End Sub
    Attached Files
    Last edited by JuJu..Ranger; 15 Nov 2018, 18:19.

  • #2
    textbox1 จะพิมพ์ข้อความอะไรครับ

    Comment


    • #3
      **** คือผมสร้าง USER FORM มาแล้วครับ ****
      ต้องการให้ .Additem ใน Listbox ครับ

      คือทั้งหมดมี 8 รายการ
      ลองพิมพ์ข้อความใน Textbox1 ว่า CAT05
      ผลลัพธ์ คือ 6 รายการ
      กระบวนการทำงานตั้งใจว่าให้ค้นหา CAT05 ทุก Cell ในแต่ละบรรทัด
      ถ้ามีให้ Show แถวนั้นมาครับ

      แต่ผมติดปัญหาในการเขียน Code VBA ที่หาข้อความครับ
      ปล.ไม่รู้ว่าผมมาถูกทางรึเปล่าครับ กังวลเหมือนกันครับ



      ลำดับที่ทำไปทั้งหมด
      1.สร้าง Range Name เพื่อใส่ RowSource ใน ListBox1
      2.สร้าง Userform ขึ้นมาและสร้าง Textbox1 และ Listbox1
      3.ต้องการให้ Textbox1 เป็นช่อง Search เพื่อค้นหาใน Listbox1
      Last edited by JuJu..Ranger; 15 Nov 2018, 18:17.

      Comment


      • #4
        โค้ดที่ถามมา ผมใช้วิธีหาทุกครั้งที่ ข้อมูลใน textbox มีการเปลี่ยนแปลง
        Sub SearchText()
        Range("A1").Activate
        Set SearchString = ActiveSheet.Cells.Find(What:=UserForm1.TextBox1.Value, After:=ActiveCell)

        i = 0
        Do Until SearchString.Address <= LastAddress
        LastAddress = SearchString.Address
        SearchString.Activate
        irow = SearchString.Row

        With UserForm1.ListBox1
        .ColumnCount = 8
        .ColumnWidths = "65;40;40;120;140;50;70;70"

        .AddItem
        .List(i, 0) = ActiveSheet.Cells(irow, 2).Text
        .List(i, 1) = ActiveSheet.Cells(irow, 3).Text
        .List(i, 2) = ActiveSheet.Cells(irow, 4).Text
        .List(i, 3) = ActiveSheet.Cells(irow, 5).Text
        .List(i, 4) = ActiveSheet.Cells(irow, 6).Text
        .List(i, 5) = ActiveSheet.Cells(irow, 7).Text
        .List(i, 6) = ActiveSheet.Cells(irow, 8).Text
        .List(i, 7) = ActiveSheet.Cells(irow, 9).Text
        End With
        Set SearchString = ActiveSheet.Cells.FindNext(After:=ActiveCell)
        i = i + 1
        Loop
        Exit Sub
        NotFound:
        UserForm1.ListBox1.AddItem "Not found"
        End Sub

        ลองคลิก search ในไฟล์แนบ แล้วก็พิมพ์ข้อความใน textbox ดูนะครับ
        Attached Files

        Comment


        • #5
          ขอบคุณมากครับ เหมือนว่าโค๊ดมัน Error อยู่ครับ
          เช่น ผมลองพิมใน Textbox1 ว่า SVT000 มันจะ Error ว่า

          Run-time error '91':
          Object variable or With block variable not set

          แต่ยังไงผมจะลองแก้เองอีกครั้งก่อน ขอบคุณสำหรับแนวทางครับ จะมารายงานผลอีกที่ครับ

          Comment


          • #6
            อ้อ เกิดจากหาไม่เจอ และผมเผลอลบ on error ทิ้ง

            เพิ่ม On Error GoTo NotFound:
            หลังบรรทัด set ครับ

            Comment


            • #7
              สำเร็จแล้วครับ ขอบคุณมากๆครับ ได้ตามที่ผมต้องการทั้งหมดแล้วครับ ขอบคุณจริงๆ ครับ

              VBA Search ที่ผมต้องการ

              Comment

              Working...
              X