Page 1 of 1

vba ค้นหาข้อความแล้วให้แสดงผลใน textbox

Posted: Fri Feb 10, 2017 2:19 pm
by trin
มือใหม่ขอสอบถามครับผมต้องการทำฟอร์มค้นหาข้อมูลในชีตแล้วให้ข้อมูลที่ค้นหาทั้งหมดที่มีในคำค้น มาแสดงทั้งแถว
Image
ตามใน code ต้องการให้พิมพ์คำค้นเป็นชื่อหรือนามสกุลใน TextBox1 แล้วให้แสดงผลการค้นหาใน TextBox2 ต้องเขียนคำสั่งอย่างไรครับ
ตอนนี้ผลยังแสดงอยู่ที่ชีต data อยู่เลยครับ ตามไฟล์ที่แนบครับ
ค้นหาหมายเลข.xlsm
(19.11 KiB) Downloaded 31 times

Code: Select all

Private Sub TextBox1_Change()
Sheets("data").Range("$A$2:$B$" & Range("C65536").End(xlUp).Row).AutoFilter Field:=2, Criteria1:="*" & TextBox1.Value & "*"
End Sub

Private Sub TextBox2_Change()

End Sub
	

Re: ิvba ค้นหาข้อความแล้วให้แสดงผลใน textbox

Posted: Fri Feb 10, 2017 7:10 pm
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

Private Sub TextBox1_Change()
    Dim data as Range
    On Error Resume Next
    With Sheets("data")
        Set data = .Range("a2", .Range("b" & .Rows.Count).End(xlUp))
        If Application.CountIf(data, TextBox1.Text) > 0 Then
            TextBox2.Text = Application.VLookup(TextBox1.Text, data, 2, 0)
        Else
            TextBox2.Text = ""
        End If
    End With
End Sub

Re: vba ค้นหาข้อความแล้วให้แสดงผลใน textbox

Posted: Fri Feb 10, 2017 10:08 pm
by trin
ลองปรับ code ตามอาจารย์แล้ว คราวนี้พอพิมพ์คำค้นในช่อง Textbox1 แล้วเหมือนโปรแกรมไม่ยอมค้นหาให้เลยครับ ไม่มีข้อความอะไรขึ้นที่ Textbox2 เลย ผมเอาไฟล์แนบมาด้วยแล้วครับ ผมใส่ code ผิดตรงใหนบ้างหรือเปล่า รบกวนช่วยชี้แนะด้วยครับ (มือใหม่จริงๆ)

Code: Select all

'Êͧá¶Ç¢éÒ§ÅèÒ§à»ç¹ code à¡èÒ
'Private Sub TextBox1_Change()
'Sheets("data").Range("$A$2:$B$" & Range("C65536").End(xlUp).Row).AutoFilter Field:=2, Criteria1:="*" & TextBox1.Value & "*"
End Sub
Private Sub TextBox1_Change()
    Dim data As Range
    On Error Resume Next
    With Sheets("data")
        Set data = .Range("a2", .Range("b" & .Rows.Count).End(xlUp))
        If Application.CountIf(data, TextBox1.Text) > 0 Then
            TextBox2.Text = Application.VLookup(TextBox1.Text, data, 2, 0)
        Else
            TextBox2.Text = ""
        End If
    End With
End Sub

Re: vba ค้นหาข้อความแล้วให้แสดงผลใน textbox

Posted: Fri Feb 10, 2017 10:49 pm
by snasui
:D คำค้นที่ว่านั้นคือค่าใดบ้างครับ

ตาม Code นั้นคอลัมน์ A จะต้องเป็น Text ทั้งหมดจึงจะนำไปค้นหาได้ครับ

ในไฟล์ที่แนบมา A2 ไม่ใช่ Text แต่เป็น Number จะต้องทำให้เป็น Text เหมือนเซลล์อื่น ๆ ครับ

Re: vba ค้นหาข้อความแล้วให้แสดงผลใน textbox

Posted: Sat Feb 11, 2017 10:35 am
by trin
ขอบคุณครับอาจารย์ ผมได้ปรับที่ชีตของexcel ให้เป็น text ทั้งหมดแล้วสามารถค้นหาได้โดยพิพม์เลขสมาชิกที่ Textbox1 ถ้าพิมพ์ถูก ชื่อและนามสกุลของสมาชิกก็จะมาแสดงที่ Textbox1
****
แต่ความต้องการไม่ใช่แบบนี้ครับ ที่ต้องการคือ สมมุติว่ามีสมาชิกมาติดต่อ แต่เขาจำหมายเลขสมาชิกตัวเองไม่ได้ เลยต้องการค้นหาจากชื่อหรือนามสกุล โดยผู้ใช้ excel จะค้นด้วยการพิมพ์ชื่อหรือนามสกุล แล้วให้ Textbox2 แสดงทุกแถวที่มีคำ ในคำค้นนั้นๆ ตัวอย่างเช่น สมาชิกชื่ออำนาจ พิมพ์คำว่า อำนาจ ลงในช่อง Textbox1 แล้วช่อง Textbox2 จะแสดงสมาชิกทุกคนที่ชื่อหรือนามสกุลมีคำว่า "อำนาจ" อยู่
(ก็คือจะค้นหาหมายเลขสมาชิกจากชื่อหรือนามสกุลก็ได้) โดย Box ที่จะแสดงจะต้องแสดงหมายเลขสมาชิกกับชื่อและนามสกุล คล้ายกับรูปที่ผมแนบมาครับ

Re: vba ค้นหาข้อความแล้วให้แสดงผลใน textbox

Posted: Sat Feb 11, 2017 11:07 am
by snasui
:D การทำเช่นนั้นไม่จำเป็นต้องใช้ VBA ให้ยุ่งยาก ใช้สูตรก็เพียงพอแล้วครับ

หากจะใช้ VBA จำเป็นต้องปรับมาเองก่อนเสมอ ติดตรงไหนค่อยถามกันต่อครับ

Re: vba ค้นหาข้อความแล้วให้แสดงผลใน textbox

Posted: Sat Feb 11, 2017 12:11 pm
by kedsinee
สอบถามการใส่สูตร
ดิฉันมีปัญหาเกี่ยวกับการใช้สูตรนะค่ะ พอดีดิฉันมีไฟล์งานตัวนึงมาทำซึ่งโจทย์ที่ได้คือการคำนวณหาคะแนนโดยมีเงื่อนไขที่ว่า
หากทำยอดได้ 100%เต็ม จะได้คะแนนอยู่ที่ 30 คะแนน แต่ถ้ายอดที่ทำได้ตั้งแต่80%ลงมาจะไม่มีคะแนน ซึ่งโจทย์จะอยู่ที่ว่าถ้าทำได้อยู่ในช่วง 80-100 % จะได้คะแนนเท่าไหร่ เช่น ได้ 78% เราจะใช้สูตรแบบไหนในการคำนวณค่ะ

Re: vba ค้นหาข้อความแล้วให้แสดงผลใน textbox

Posted: Sat Feb 11, 2017 12:15 pm
by snasui
:D คุณ kedsinee กรุณาตั้งกระทู้ใหม่เนื่องจากว่าเป็นปัญหาที่ไม่เกี่ยวกับกระทู้นี้

การตั้งกระทู้ดูที่หัวข้อโปรดทราบหัวข้อที่ 4 ด้านบนครับ :roll:

Re: vba ค้นหาข้อความแล้วให้แสดงผลใน textbox

Posted: Sat Feb 11, 2017 2:34 pm
by pong2532
ลองใช้คำสั่ง Find ดูครับ แล้วเปลี่ยนจาก Textbox2 เป็น Listbox แทน