Page 1 of 1
คีย TextBoxเจอข้อความซ้ำแล้วโปรแกรมก็จะฟ้อง
Posted: Thu Nov 17, 2011 11:31 am
by yodpao.b
1.ต้องการคีย์ " หหห4 " ใน TextBox112 พอคีย์จบประโยค
2.ก็ไปคีย TextBox อื่น แล้วโปรแกรมก็จะฟ้องว่ามีข้อความนี้อยู่ในระบบ
คำถาม จะเขียน Code อย่างไรดีครับ
พร้อมกันนี้ได้แนบไฟล์มาให้ดู
Re: คีย TextBoxเจอข้อความซ้ำแล้วโปรแกรมก็จะฟ้อง
Posted: Thu Nov 17, 2011 4:51 pm
by bank9597

เข้าใจว่าต้องการใส่ชื่อสัมนาโดยไม่ซำกับข้อมูลที่มีอยู่แล้ว
แต่ทว่าการตรวจสอบผ่าน TextBox ค่ิอนข้างยากครับ ผมเลยทำตัวอย่างมาให้ดู เผื่อว่าจะสามารถนำไปปรับใช้ได้ครับ
โดยจะอยู่ใน "Sheet1" ซึ่งในเซลล์ "B2" จะให้ใส่ชื่อลงไป แล้วจะมีปุ่มไว้สำหรับตรวจสอบข้อมูลว่าซ้ำหรือไม่ หากซ้ำระบบก็จะแจ้งเตือน แต่หากไม่ซ้ำระบบก็จะแจ้งตรวจสอบผ่านครับ ยังไงลองๆเอาไปปรับใช้ดูครับ
สำเนาของ ข้อความซ้ำ.xls
Re: คีย TextBoxเจอข้อความซ้ำแล้วโปรแกรมก็จะฟ้อง
Posted: Thu Nov 17, 2011 5:56 pm
by bank9597

เข้าใจว่าต้องการใส่ชื่อสัมนาโดยไม่ซำกับข้อมูลที่มีอยู่แล้ว
แต่ทว่าการตรวจสอบผ่าน TextBox ค่ิอนข้างยากครับ ผมเลยดัดแปลงรูปแบบทำเป็นตัวอย่างให้ดู เผื่อจะสามารถปรับใช้ได้
โดยผมจะเพิ่มปุ่มชื่อ "ตรวจสอบ" ไว้หลัง TextBox112 เวลาคีย์ชื่อลงไปในTextBox112 แล้ว ก็ให้กดปุ่มตรวจสอบว่าชื่อซ้ำหรือไม่ หากซ้ำระบบจะแจ้งเตือน และหากไม่ซ้ำ ระบบก็จะเเจ้งบอกให้ทราบเช่นกันครับ
ยังไงก็ลองนำไปปรับใช้ดูครับ การทำงานบนแบบฟอร์มค่อนข้างยากและใช้สูตรยากเช่นกัน ฉะนั้นตัวอย่างที่ทำไปให้ดู จะมุ่งเน้นทำงานกับ WorkSheets เป็นหลักครับ
สำเนาของ ข้อความซ้ำ.xls
Re: คีย TextBoxเจอข้อความซ้ำแล้วโปรแกรมก็จะฟ้อง
Posted: Fri Nov 18, 2011 8:20 am
by yodpao.b
รบกวนอาจารย์ช่วยดูและแสดงความเห็นกระทู้ เมื่อ: 17 พ.ย. 2011 11:31 ผมจะได้นำไปแก้ไข เสารือาทิตย์ เพราะวันจันทร์ต้องส่งให้เขาทำแล้วครับ
Re: คีย TextBoxเจอข้อความซ้ำแล้วโปรแกรมก็จะฟ้อง
Posted: Fri Nov 18, 2011 9:02 am
by snasui

ผมดาวน์โหลดไฟล์มาแล้วไม่พบ Code เจอแค่ Userform ลองแนบ Code มาในกระทู้และช่วยปรับข้อความให้เป็น Code ด้วย จะได้สะดวกในการนำไปใช้ครับ
Re: คีย TextBoxเจอข้อความซ้ำแล้วโปรแกรมก็จะฟ้อง
Posted: Fri Nov 18, 2011 9:19 am
by yodpao.b
Code: Select all
Private Sub TextBox112_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Sheets("Data_Seminar").Select
Range("D4").Select
If ActiveCell.Value = TextBox112.Text Then
TextBox121.Text = ActiveCell.Offset(0, -6).Value
Exit Sub
End If
End Sub
โคด้มีเท่านี้ครับ
ผมไม่รู้ว่าจะทำอย่างไรเพระไม่เคยทำลักษณะแบบนี้ครับ
ไฟล์แนบ
Re: คีย TextBoxเจอข้อความซ้ำแล้วโปรแกรมก็จะฟ้อง
Posted: Fri Nov 18, 2011 9:37 am
by snasui

ผมทดสอบคีย์แล้วไม่เห็นมีการฟ้องใด ๆ ช่วยจับภาพที่โปรแกรมฟ้องมาด้วยครับ
Re: คีย TextBoxเจอข้อความซ้ำแล้วโปรแกรมก็จะฟ้อง
Posted: Fri Nov 18, 2011 10:14 am
by yodpao.b
ขอโทษครับอาจาร์ยผมเรียบร้อนก็เลยงง
เอาใหม่นะครับอาจารย์
Codeนี้
Code: Select all
Private Sub TextBox112_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Sheets("Data_Seminar").Select
Range("D4").Select
Do While True
If ActiveCell.Value = TextBox112.Text Then
TextBox121.Text = ActiveCell.Offset(0, 0).Value
MsgBox " ข้อความซ้ำ "
Exit Sub
End If
ActiveCell.Offset(1, 0).Select
Loop
End Sub
อธิบายcode คือ
1.เมื่อพิมพ์ " หหห4 "ที่ TextBox112 แล้วไปคลิกที่ TextBox อื่น มันจะฟ้องว่าค่าซ้ำ ( แสดงผลถูกต้อง )
2.เมื่อพิมพ์ " หหห5 "ที่ TextBox112 แล้วไปคลิกที่ TextBox อื่น มันควรไม่แสดงผลอะไรเลย
แต่code ผมมันกลับแสดง EEror
Re: คีย TextBoxเจอข้อความซ้ำแล้วโปรแกรมก็จะฟ้อง
Posted: Fri Nov 18, 2011 10:31 am
by snasui

ลองปรับ Code เป็นตามด้านล่างครับ
Code: Select all
Private Sub TextBox112_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim lng As Long
Sheets("Data_Seminar").Select
Range("D4").Select
lng = Sheets("Data_Seminar").Range("D" & Rows.Count) _
.End(xlUp).Row
Do While ActiveCell.Row <= lng
If ActiveCell.Value = TextBox112.Text Then
TextBox121.Text = ActiveCell.Offset(0, 0).Value
MsgBox "ข้อความซ้ำ"
Exit Sub
End If
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Re: คีย TextBoxเจอข้อความซ้ำแล้วโปรแกรมก็จะฟ้อง
Posted: Fri Nov 18, 2011 10:46 am
by yodpao.b
สุดยอด ครับ
Re: คีย TextBoxเจอข้อความซ้ำแล้วโปรแกรมก็จะฟ้อง
Posted: Mon Nov 21, 2011 8:19 am
by yodpao.b
Code: Select all
Private Sub TextBox112_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim lng As Long
Sheets("Data_Seminar").Select
Range("D4").Select
lng = Sheets("Data_Seminar").Range("D" & Rows.Count) _
.End(xlUp).Row
Do While ActiveCell.Row <= lng
If ActiveCell.Value = TextBox112.Text Then
TextBox121.Text = ActiveCell.Offset(0, 0).Value
MsgBox "ข้อความซ้ำ"
Exit Sub
End If
ActiveCell.Offset(1, 0).Select
Loop
End Sub
จากโคดด้านบนคือเมื่อคียข้อความครบแล้วตรวจดูว่าเจอข้อความนี้ไหมถ้าเจอให้ขึ้นMsgBox "ข้อความซ้ำ"ถ้าไม่เจอให้ปล่อยไป
คำถาม กลับตรงข้ามกันคือ
เมื่อคียข้อความครบแล้วตรวจดูว่าเจอข้อความนี้ไหมถ้าเจอให้ปล่อยไป ถ้าไม่เจอให้ขึ้นMsgBox "ไม่มีข้อมูลนี้"
ติดแค่ตรงนี้ก็เสร็จแล้วครับ
ผมได้ทดลองเปลี่ยน
Code: Select all
If ActiveCell.Value = TextBox112.Text Then
เป็น
Code: Select all
If ActiveCell.Value <>TextBox112.Text Then
ผลที่ได้ MsgBox ขั้นทั้ง 2 ข้อแม้เลยครับ
Re: คีย TextBoxเจอข้อความซ้ำแล้วโปรแกรมก็จะฟ้อง
Posted: Mon Nov 21, 2011 11:38 pm
by snasui

ลองปรับเป็นตามด้านล่างครับ
Code: Select all
Private Sub TextBox112_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim lng As Long, i As Integer
Sheets("Data_Seminar").Select
Range("D4").Select
lng = Sheets("Data_Seminar").Range("D" & Rows.Count) _
.End(xlUp).Row
Do While ActiveCell.Row <= lng
If ActiveCell.Value = TextBox112.Text Then
i = i + 1
End If
ActiveCell.Offset(1, 0).Select
Loop
If i = 0 Then
MsgBox "Not found"
End If
End Sub
Re: คีย TextBoxเจอข้อความซ้ำแล้วโปรแกรมก็จะฟ้อง
Posted: Wed May 20, 2020 3:51 am
by yodpao.b
ขอบคุณครับมาเอาของเก่าไปใช้