:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

code vba ค้นหาข้อมูลแบบตรงตัว หรือครบทุกตัว ตามเงื่อนไข

Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: code vba ค้นหาข้อมูลแบบตรงตัว หรือครบทุกตัว ตามเงื่อนไข

Re: code vba ค้นหาข้อมูลแบบตรงตัว หรือครบทุกตัว ตามเงื่อนไข

#8

by snasui » Wed Feb 12, 2014 11:55 pm

:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Dim i As Integer
Dim c As Range
Sub find_data()
    'On Error Resume Next
    With Sheets("db_bank").Columns("A:A")
        Set c = .find(Range("d4"), LookIn:=xlValues, LookAt:=xlWhole)
        If Range("d4") = "" Then Exit Sub
        If c Is Nothing Then
            Sheets("change_save").Range("j4:j9").Value = ""
            MsgBox "ไม่มีหมายเลขบัญชีนี้"
            Sheets("change_save").Range("c2").Select
        Else
            i = .find(c, LookIn:=xlValues, LookAt:=xlWhole).Row
            .Range("A" & i).Resize(1, 6).Copy
            Sheets("change_save").Range("j4").PasteSpecial xlPasteValues, Transpose:=True
            Application.CutCopyMode = False
            MsgBox "การสืบค้นข้อมูลสำเร็จ"
            Sheets("change_save").Range("c2").Select
        End If
    End With
End Sub

Re: code vba ค้นหาข้อมูลแบบตรงตัว หรือครบทุกตัว ตามเงื่อนไข

#7

by tutape » Wed Feb 12, 2014 9:54 pm

ไฟล์แนบครับ
Attachments
ทดลองทำ 3.xlsm
(230.94 KiB) Downloaded 114 times

Re: code vba ค้นหาข้อมูลแบบตรงตัว หรือครบทุกตัว ตามเงื่อนไข

#6

by snasui » Wed Feb 12, 2014 9:14 pm

:D แนบไฟล์ตัวอย่างมาดูกันครับ

Re: code vba ค้นหาข้อมูลแบบตรงตัว หรือครบทุกตัว ตามเงื่อนไข

#5

by tutape » Wed Feb 12, 2014 8:06 pm

ผมลองปรับ code ตามเอกสารที่อาจารย์แนะนำ คือ code นี้ครับ

Code: Select all

With Worksheets(1).Range("a1:a500") 
    Set c = .Find(2, lookin:=xlValues) 
    If Not c Is Nothing Then 
        firstAddress = c.Address 
        Do 
            c.Value = 5 
            Set c = .FindNext(c) 
        Loop While Not c Is Nothing And c.Address <> firstAddress 
    End If 
End With
แล้วปรับมาเป็นของผม ดังนี้

Code: Select all

Sub find_data()
With Sheets("db_bank").Columns("A:A")
    Set c = .find(Range("d4"), LookIn:=xlValues)
            If Range("d4") = "" Then Exit Sub
            If Not c Is Nothing Then
            Sheets("change_save").Range("j4:j9").Value = ""
            MsgBox "ไม่มีเลขนี้"
            Sheets("change_save").Range("c2").Select
            Else
แต่พอรันแล้ว จะเกิดข้อผิดพลาดที่บรรทัด
Set c = .find(Range("d4"), LookIn:=xlValues)
ฟ้องว่า Compile error : Variable not defined
ผมเลยสงสัยว่า ทำแบบตัวอย่างแต่เกิด error
รบกวนอาจารย์อธิบายผมด้วยนะครับ
ขอบคุณครับ

Re: code vba ค้นหาข้อมูลแบบตรงตัว หรือครบทุกตัว ตามเงื่อนไข

#4

by snasui » Wed Feb 12, 2014 7:29 pm

:D ลองปรับมาตามที่ผมตอบให้ก่อนครับ ได้ผลหรือไม่ได้อย่างไร แนบไฟล์ตัวอย่างมาถามกันต่อครับ

Re: code vba ค้นหาข้อมูลแบบตรงตัว หรือครบทุกตัว ตามเงื่อนไข

#3

by tutape » Wed Feb 12, 2014 7:08 pm

แล้วผมควรจะปรับสูตรบรรทัดนั้นอย่างไรครับ
แนะนำด้วยครับ :D

Re: code vba ค้นหาข้อมูลแบบตรงตัว หรือครบทุกตัว ตามเงื่อนไข

#2

by snasui » Wed Feb 12, 2014 7:02 pm

:D การค้นหาตาม Code นั้นเป็นการค้นหาในบางส่วนของคำก็ได้ ทั้งคำก็ได้ จึงไม่ตรงตามที่ต้องการครับ

สำหรับการค้นหาแบบตรงตัวสามารถใช้ได้หลายแบบ เช่นการใช้สูตร Match เข้าช่วย (Application.Match...) หรือ การ Loop ด้วย For...Next เป็นต้น

code vba ค้นหาข้อมูลแบบตรงตัว หรือครบทุกตัว ตามเงื่อนไข

#1

by tutape » Wed Feb 12, 2014 5:30 pm

ผมได้ลองเขียน code vba ในการค้นหาข้อมูลแบบมีเงื่อนไข โดย code ที่ผมลองฝึกเขียนเป็นดังนี้

Code: Select all

 If Range("d4") = "" Then Exit Sub
            If Sheets("db_bank").Columns("A:A").find(Range("d4"), LookIn:=xlValues) Is Nothing Then
            Sheets("change_save").Range("j4:j9").Value = ""
            MsgBox "ไม่มีหมายเลขนี้"
            Sheets("change_save").Range("c2").Select
            Else
เมื่อผมลองรันแมโคร ผลปรากฎว่าไม่เป็นตามที่ต้องการ คือ ผมต้องการให้คีย์ ข้อมูลเงื่อนไขในเซลล์ d4 ให้ค้นหาข้อมูลที่ตรงตามเงื่อนไขทุกประการ จึงจะแสดงข้อมูล ถ้าไม่ตรงเงื่อนไขหรือไม่เหมือนเงื่อนไข ให้แจ้งว่า ไม่มีหมายเลขนี้
แต่ code ของผมด้านบน ขอแค่แค่ผมคีย์เลขในช่อง d4 เช่น คีย์ 123 ซึ่งในฐานข้อมูลไม่มีเลข 123 แต่ผลที่ได้คือ สูตรจะดึงเอาข้อมูลที่ใกล้เคียงมาแสดงให้ เช่น ในฐานข้อมูลมีเลข 212345 สูตรก็จะเอาข้อมูลของเลขนี้มาแสดงให้ ซึ่งจริงๆ แล้ว เลขที่ให้ค้นข้อมูล คือ 123 กับเลขที่มีในฐานข้อมูลคือ 212345 เป็นเลขคนละตัวกัน
ผมจะต้องปรับ code หรือแก้ไขอย่างไรคับ ซึ่งผมเองคิดว่า code ที่น่าจะผิดพลาด คือ บรรทัด
If Sheets("db_bank").Columns("A:A").find(Range("d4"), LookIn:=xlValues) Is Nothing Then

ขอบคุณครับ

Top