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
:D ตัวอย่างการปรับ 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
:D ใช้ได้ครับ

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 นี้