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
:D เข้าใจว่าต้องการใส่ชื่อสัมนาโดยไม่ซำกับข้อมูลที่มีอยู่แล้ว

แต่ทว่าการตรวจสอบผ่าน TextBox ค่ิอนข้างยากครับ ผมเลยทำตัวอย่างมาให้ดู เผื่อว่าจะสามารถนำไปปรับใช้ได้ครับ

โดยจะอยู่ใน "Sheet1" ซึ่งในเซลล์ "B2" จะให้ใส่ชื่อลงไป แล้วจะมีปุ่มไว้สำหรับตรวจสอบข้อมูลว่าซ้ำหรือไม่ หากซ้ำระบบก็จะแจ้งเตือน แต่หากไม่ซ้ำระบบก็จะแจ้งตรวจสอบผ่านครับ ยังไงลองๆเอาไปปรับใช้ดูครับ :D
สำเนาของ ข้อความซ้ำ.xls

Re: คีย TextBoxเจอข้อความซ้ำแล้วโปรแกรมก็จะฟ้อง

Posted: Thu Nov 17, 2011 5:56 pm
by bank9597
:D เข้าใจว่าต้องการใส่ชื่อสัมนาโดยไม่ซำกับข้อมูลที่มีอยู่แล้ว

แต่ทว่าการตรวจสอบผ่าน TextBox ค่ิอนข้างยากครับ ผมเลยดัดแปลงรูปแบบทำเป็นตัวอย่างให้ดู เผื่อจะสามารถปรับใช้ได้

โดยผมจะเพิ่มปุ่มชื่อ "ตรวจสอบ" ไว้หลัง TextBox112 เวลาคีย์ชื่อลงไปในTextBox112 แล้ว ก็ให้กดปุ่มตรวจสอบว่าชื่อซ้ำหรือไม่ หากซ้ำระบบจะแจ้งเตือน และหากไม่ซ้ำ ระบบก็จะเเจ้งบอกให้ทราบเช่นกันครับ

ยังไงก็ลองนำไปปรับใช้ดูครับ การทำงานบนแบบฟอร์มค่อนข้างยากและใช้สูตรยากเช่นกัน ฉะนั้นตัวอย่างที่ทำไปให้ดู จะมุ่งเน้นทำงานกับ WorkSheets เป็นหลักครับ :D
สำเนาของ ข้อความซ้ำ.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
:shock: ผมทดสอบคีย์แล้วไม่เห็นมีการฟ้องใด ๆ ช่วยจับภาพที่โปรแกรมฟ้องมาด้วยครับ

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
:D ลองปรับ 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
:D ลองปรับเป็นตามด้านล่างครับ

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
ขอบคุณครับมาเอาของเก่าไปใช้