Page 1 of 1
vba ค้นหาข้อความแล้วให้แสดงผลใน textbox
Posted: Fri Feb 10, 2017 2:19 pm
by trin
มือใหม่ขอสอบถามครับผมต้องการทำฟอร์มค้นหาข้อมูลในชีตแล้วให้ข้อมูลที่ค้นหาทั้งหมดที่มีในคำค้น มาแสดงทั้งแถว

ตามใน code ต้องการให้พิมพ์คำค้นเป็นชื่อหรือนามสกุลใน TextBox1 แล้วให้แสดงผลการค้นหาใน TextBox2 ต้องเขียนคำสั่งอย่างไรครับ
ตอนนี้ผลยังแสดงอยู่ที่ชีต data อยู่เลยครับ ตามไฟล์ที่แนบครับ
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

ตัวอย่าง 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

คำค้นที่ว่านั้นคือค่าใดบ้างครับ
ตาม 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

การทำเช่นนั้นไม่จำเป็นต้องใช้ 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

คุณ kedsinee กรุณาตั้งกระทู้ใหม่เนื่องจากว่าเป็นปัญหาที่ไม่เกี่ยวกับกระทู้นี้
การตั้งกระทู้ดูที่หัวข้อโปรดทราบหัวข้อที่ 4 ด้านบนครับ

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