Page 1 of 1
ตรวจสอบค่าใน textbox ถ้าเหมือนกันให้หยุดการทำงาน
Posted: Wed May 20, 2020 5:50 am
by yodpao.b
ตรวจสอบค่าใน textbox ถ้าเหมือนกันให้หยุดการทำงาน ถ้าไม่เหมือนให้ทำงานต่อ
ลองมา 4 code ไม่ได้ซัก code หาคนช่วยดีกว่า
ความต้องการคือ ตอน add ให้ดูข้อมุลใน textbox1 ที่อยู่ในฟอรืม frmReturntool แล้วจึง
นำค่าไปตรวจสอบ ใน listbox 2 คอลัม รหัสครุภัณฑ์ ถ้าเจอค่าที่เหมือนกันกับ textbox1 ให้หยุดทำงาน
แต่ถ้าไม่เหมือนให้ Run ต่อไปครับ
ผมเขียน ตรวจสอบใน Listbox ไม่ได้ แต่ผมเขียน code ให้ไปตรวจสอบใน sheet Addrequisition1 คอลัม F แทน
ผลที่ได้น่าแปลกตรับ
ถ้าเลือกใบยืม 03 ทำงานถูกต้องทุกอย่าง ถ้าเจอค่าซ้ำกันเครื่องก็จะหยุดทำงาน ถ้าไม่เจอก็จะทำงานต่อไป
ถ้าเลือกใบยืม 02 จะเจอหรือไม่เจอค่าที่ซ้ำกันเครื่องก็ยังทำงานต่อไปครับ ซึ่งผิด
2.JPG
ขั้นตอนการทำงานครับ
0.JPG
1.JPG
รบกวนช่วยแก้ให้ด้วยครับ หรือ code เดียวแล้วครับ ก็สำเร็จแล้ว
Re: ตรวจสอบค่าใน textbox ถ้าเหมือนกันให้หยุดการทำงาน
Posted: Wed May 20, 2020 5:51 am
by yodpao.b
ไฟล์แนบครับ
code Sub cmdAdd_Click อยู่ในฟอร์ม frmReturntool ปุ่ม add ครับ
code ที่ผิด
Code: Select all
Private Sub cmdAdd_Click()
If ComboBox1 = "" Then
MsgBox "ท่านต้อง อ้างอิงจากการ ค้นหาเลขที่ใบยืม ใน Box ด้านซ้ายก่อน", vbOKOnly + vbInformation, "เพื่มข้อมูลในใบคืนเครื่องมือ"
Exit Sub
End If
If ListBox1.ListIndex = -1 Then
MsgBox "ท่านต้อง้เลือกรายการใน List box ด้านล่างก่อน", vbOKOnly + vbInformation, "เพื่มข้อมูลในใบคืนเครื่องมือ"
Exit Sub
End If
' Dim iRow As Long
' iRow = [Counta(Addrequisition1!F:F)] + 1
' Sheets("Addrequisition1").Select
' If iRow = Me.TextBox1.Value Then
' MsgBox "Add ค่าซ้ำกัน", vbOKOnly + vbInformation, "เพื่มข้อมูลในใบคืนเครื่องมือ"
' Exit Sub
' End If
' Dim lng As Long, i As Integer
' Sheets("Addrequisition1").Select
' Range("F1").Select
' lng = Sheets("Addrequisition1").Range("F" & Rows.Count) _
' .End(xlUp).Row
' Do While ActiveCell.Row <= lng
' If ActiveCell.Value <> TextBox1.Text Then
' i = i + 1
' End If
' ActiveCell.Offset(1, 0).Select
' Loop
' If i = 0 Then
' MsgBox "Not found"
' End If
Dim lng As Long
Sheets("Addrequisition1").Select
Range("F1").Select
lng = Sheets("Addrequisition1").Range("F" & Rows.Count) _
.End(xlUp).Row
Do While ActiveCell.Row <= lng
If ActiveCell.Value = TextBox1.Text Then
MsgBox "ข้อความซ้ำ"
Exit Sub
End If
ActiveCell.Offset(1, 0).Select
Loop
Call SubmitfrmReturntool
Call ResetReturntool3
Me.ListBox2.ListIndex = -1 'ไม่โชว์แถบสีน้ำเงิน
MsgBox "ส่งข้อมูลไปยังเอกสารใบเบิกยืม/ตืน เครื่องมือแล้ว", vbOKOnly + vbInformation, "Confirmation"
End Sub
ชุดด้านล่างนี้เป็น code ที่ใช้ตรวจสอบครับ
Dim lng As Long
Sheets("Addrequisition1").Select
Range("F1").Select
lng = Sheets("Addrequisition1").Range("F" & Rows.Count) _
.End(xlUp).Row
Do While ActiveCell.Row <= lng
If ActiveCell.Value = TextBox1.Text Then
MsgBox "ข้อความซ้ำ"
Exit Sub
End If
ActiveCell.Offset(1, 0).Select
Loop
Re: ตรวจสอบค่าใน textbox ถ้าเหมือนกันให้หยุดการทำงาน
Posted: Wed May 20, 2020 7:54 pm
by snasui

ตัวอย่างการปรับ Code ครับ
Code: Select all
'Other code
If ListBox1.ListIndex = -1 Then
MsgBox "ท่านต้อง้เลือกรายการใน List box ด้านล่างก่อน", vbOKOnly + vbInformation, "เพื่มข้อมูลในใบคืนเครื่องมือ"
Exit Sub
End If
If Application.CountIf(Sheets("Addrequisition1").Range("e:e"), _
Me.ListBox1.List(ListBox1.ListIndex, 3)) > 0 Then Exit Sub
Call SubmitfrmReturntool
'Ohter code
Re: ตรวจสอบค่าใน textbox ถ้าเหมือนกันให้หยุดการทำงาน
Posted: Wed May 20, 2020 8:55 pm
by yodpao.b
Code: Select all
If Application.CountIf(Sheets("Addrequisition1").Range("e:e"), _
Me.ListBox1.List(ListBox1.ListIndex, 3)) > 0 Then
MsgBox "Add ค่าซ้ำกัน", vbOKOnly + vbInformation, "เพื่มข้อมูลในใบคืนเครื่องมือ"
Exit Sub
End If
ผมเพิ่ม MsgBox เข้าไป
เขียน code แบบนี้ใช้ไหมครับ
run ได้ตามที่ต้องการ แต่ถามเพื่อความแน่นอน เพราะตอนนี้ข้อมูลยังมีน้อย ก็เลยไม่แน่ใจครับ
Re: ตรวจสอบค่าใน textbox ถ้าเหมือนกันให้หยุดการทำงาน
Posted: Wed May 20, 2020 8:59 pm
by snasui

ใช้ได้ครับ
MsgBox สามารถเพิ่มได้แทบทุกตำแหน่งใน Code ครับ
Re: ตรวจสอบค่าใน textbox ถ้าเหมือนกันให้หยุดการทำงาน
Posted: Wed May 20, 2020 9:15 pm
by yodpao.b
ขอบคุณครับ
Re: ตรวจสอบค่าใน textbox ถ้าเหมือนกันให้หยุดการทำงาน
Posted: Mon May 25, 2020 2:45 pm
by yodpao.b
ขอโทษตรับผมถามผิด
If Application.CountIf(Sheets("Addrequisition1").Range("e:e"), _
Me.ListBox1.List(ListBox1.ListIndex, 3)) > 0 Then Exit Sub
จาก code ด้านบน ของอาจารย์ ไม่มี End If แต่ผมได้เพิ่มไป
แต่จริงแล้วไม่มีก็ได้ใช่ไหมครับ
Re: ตรวจสอบค่าใน textbox ถ้าเหมือนกันให้หยุดการทำงาน
Posted: Mon May 25, 2020 3:11 pm
by yodpao.b
ขอบคุณมากครับ โพสต ก่อนหน้าที่ถาม ไม่ต้องแล้วครับ
ผมเข้าใจข้อแตกต่างแล้ว้ครับ
Then Exit Sub
ถ้าติดกันสามารถทำงานได้เลยไมจำเป็นต้องมี End If
แต่ถ้าคนละบรรทัด ต้องมี End If
Re: ตรวจสอบค่าใน textbox ถ้าเหมือนกันให้หยุดการทำงาน
Posted: Mon May 25, 2020 3:46 pm
by yodpao.b
แต่ก่อนผมมักมีปัญหาเกี่ยวกับ ComboBox ในการใช้ค้นหา
ถ้ามีคนพิมพ์ก็จะ eeror อาจารย์ก็ให้ใช้ On Error Resume Next ช่วย
แต่ผมนำ code ที่อาจารย์สอนด้านบนมาใช้ เวลาพิมพ์ผิดก็ไม่เป็นไร แถมมี MsgBox บอก
สถานะด้วย ถ้าลบข้อความจะ eeror ก็ใช้ On Error Resume Next ช่วย ข้อมูลก็กลับมาเหมือนเดิม
If Application.CountIf(Sheets("Database").Range("B:B"), Me.ComboBox1.Value) = 0 Then
MsgBox "ไม่มีในฐานข้อมุล", vbOKOnly + vbInformation, "กรุณาเลือกจาก List"
ComboBox1.Value = ""
Exit Sub
End If
ผมจะเอาไปตรวจสอบข้อความทุก ComboBox เลย code สั้นด้วย
ขอบคุณมากครับสำหรับ code นี้