Announcement

Collapse

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

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

ทำไมการใช้ Find และ FindNext ของ VBA ในชีทงานตัวอย่าง จึงไม่พบค่าในบรรทัดแรกก่อน

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

  • ทำไมการใช้ Find และ FindNext ของ VBA ในชีทงานตัวอย่าง จึงไม่พบค่าในบรรทัดแรกก่อน

    ผมมีชีทงานที่ต้องตรวจสอบว่า เป็นงานแบบ m, แบบ c หรือแบบ mc ได้สร้างเงื่อนไขไว้ที่หน้าชีทงาน ซึ่งในการค้นหาก็น่าจะได้ m, mc แต่ค่าที่ได้กลับเป็น c, cm ซึ่งไม่ตรงกับจุดประสงค์ ทำอย่างไรการค้นหาจึงจะเริ่มที่บรรทัดแรกครับผม
    Attached Files

  • #2
    ที่เป็นยังงี้เพราะ find จะเริ่มหาค่าที่เซลล์ถัดไปเสมอครับ
    ลองใช้วิธี ตั้งให้เซลล์สุดท้าย activate ซึ่งจะทำให้ find กลับมาเริ่มหาจากเซลล์ A1 ครับ
    เพิ่ม .Range("A25").Select
    ก่อนบรรทัด set x find =

    Comment


    • #3
      ขอบคุณ คุณVajaraphol ที่ให้คำแนะนำครับผม
      แต่เนื่องจากการใช้ Find และ FindNext ค่อนข้างจะผิดพลาดได้ง่ายมาก ผมจึงได้ออกแบบหน้าทำงานใหม่ ให้ข้อความ fdbStyle อยู่ในคอลัมน์ A เพียงคอลัมน์เดียวเท่านั้น แล้วปรับโค้ดใหม่ดังนี้
      Dim xFind
      For each xFind in Activesheet.Usedrange.Columns(1).cells
      if xFind.text="fdbStyle" then
      .....
      .....
      End if
      Next
      ก็สามารถได้งานตรงตามจุดประสงค์เช่นกันครับผม
      Last edited by mitrapap; 30 Jul 2018, 23:15.

      Comment


      • อรวีร์
        อรวีร์ commented
        Editing a comment
        การวน For...Next เปรียบเทียบทีละ cell จะช้ากว่าการใช้ Method Find ของ Excel เองค่ะ ถ้าข้อมูลมีมากจะเห็นผล

    • #4
      Method Find มี parameter อีกตัวนึง คือ After ค่ะ
      ลองแก้ Set xFind = .Find("fdbStyle", LookAt:=xlWhole)
      เป็น Set xFind = .Find("fdbStyle", LookAt:=xlWhole, After:=.Item(.Count))
      เพื่อบังคับให้ค้นหาต่อจาก cell สุดท้ายใน UsedRange (คือวนมาเริ่มที่ Cell แรก)

      Comment


      • Vajaraphol
        Vajaraphol commented
        Editing a comment
        ไม่เคยใช้ after แบบนี้เลย ขอบคุณครับ

    • #5
      ขอบคุณมากๆครับผม เป็นการใช้ After ต่างจากที่เคยใช้ แต่ได้ผลจริงๆครับ

      Comment

      Working...
      X