Page 1 of 1

บังคับให้คีย์เฉพาะตัวเลข 13หลักเท่านั้น

Posted: Fri May 21, 2021 11:18 am
by liveday
เรียนอาจารย์ทุกท่านครับ
ผมต้องการคีย์ใน Textbox8 ให้คีย์ข้อมูลเฉพาะตัวเลขเท่านั้นครับ หากคีย์ตัวอักษรอื่นให้เด้งเตือนและลบข้อมูลให้คีย์ใหม่ครับ

Code: Select all

Private Sub TextBox8_Change()
If Me.TextBox8.Value = blank Then Exit Sub
 With Me.TextBox8
     chkval = IsNumeric(.Value)
     If chkval = False Then
         MsgBox ("ให้ใส่เฉพาะตัวเลขเท่านั้น")
 .Text = Left(.Text, Len(.Text) - 1)
End If
    End With
End Sub

Code: Select all

Private Sub TextBox8_AfterUpdate()
    TextBox8.Value = Format(TextBox8.Value, "0-0000-00000-00-0")
End Sub
จากสูตรนี้ผมต้องปรับสูตรอย่างไรบ้างครับ

Re: บังคับให้คีย์เฉพาะตัวเลข 13หลักเท่านั้น

Posted: Fri May 21, 2021 11:26 am
by logic
ลองเพิ่มการนับเข้าไปอีกอันครับ

chkval = IsNumeric(.Value) And Len(.Value) = 13

Re: บังคับให้คีย์เฉพาะตัวเลข 13หลักเท่านั้น

Posted: Fri May 21, 2021 11:42 am
by liveday

Code: Select all

Private Sub TextBox8_Change()
If Me.TextBox8.Value = blank Then Exit Sub
 With Me.TextBox8
     chkval = IsNumeric(.Value)
         chkval = IsNumeric(.Value) And Len(.Value) = 13
     If chkval = False Then
         MsgBox ("ห้ใส่เฉพาะตัวเลขเท่านั้น")
 .Text = Left(.Text, Len(.Text) - 1)
End If
    End With
End Sub
ใส่ดูแล้วนะครับ กลายเป็นว่าใส่ตัวเลขก็โดนลบไปด้วยครับ

Re: บังคับให้คีย์เฉพาะตัวเลข 13หลักเท่านั้น

Posted: Fri May 21, 2021 11:53 am
by logic
อ่านแล้วมันไม่มีบรรทัดลบ Textbox แล้วมันลบไปจังหวะไหน ขอภาพบรรทัดนั้นมาอีกทีครับ

แนบไฟล์มาดีกว่าไหมครับ 🤔

Re: บังคับให้คีย์เฉพาะตัวเลข 13หลักเท่านั้น

Posted: Fri May 21, 2021 12:01 pm
by liveday
Image

Image

ใส่ตัวเลขก็จะโดนลบไปด้วยเหมือนดังในรูปครับ

Re: บังคับให้คีย์เฉพาะตัวเลข 13หลักเท่านั้น

Posted: Fri May 21, 2021 12:04 pm
by logic
เห็นแต่ภาพผมช่วยไม่ได้ ขอผ่านครับ 🤣

Re: บังคับให้คีย์เฉพาะตัวเลข 13หลักเท่านั้น

Posted: Fri May 21, 2021 12:37 pm
by snasui
:D ควรตัดไฟล์มาเฉพาะที่เป็นปัญหามาเป็นตัวอย่าง จะได้สะดวกในการตอบของเพื่อนสมาชิกครับ

นอกจากนี้การควรจะ Debug ให้เป็น จะได้ทราบว่าเป็นปัญหาที่บรรทัดไหน วิธีการ Debug ดูที่นี่เป็นตัวอย่างครับ https://snasui.com/viewtopic.php?f=3&t= ... 47#p103247

Re: บังคับให้คีย์เฉพาะตัวเลข 13หลักเท่านั้น

Posted: Fri May 21, 2021 2:09 pm
by liveday
ผมแนบตัวอย่างมาให้ช่วยดูนะครับ ผมรัน Debug ไม่ติดปัญหาอะไรนะครับ
จากไฟล์ตัวอย่างครับ Sheet (ต้นฉบับใหม่) Click Cell H20 (Rectangle 3) จะขึ้น Userform เมื่อเรากรอกตัวเลขตรง Textbox8 (เลขผู้เสียภาษี) ใส่ตัวอักษรตัวแรกไม่ได้ จะถูกต้องครับ แต่ปัญหาคือเมื่อ ใส่ครบ 13 หลักแล้ว สูตรจะลบข้อมูลออกไปครับ ผมต้องปรับสูตรอย่างไรครับ

Code: Select all

Private Sub TextBox8_AfterUpdate()
    TextBox8.Value = Format(TextBox8.Value, "0-0000-00000-00-0")
End Sub

'Private Sub TextBox8_Change()
'    TextBox8.Text = Format(TextBox8.Text, "0-0000-00000-00-0")
'End Sub
'Private Sub TextBox8_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Private Sub TextBox8_Change()
If Me.TextBox8.Value = blank Then Exit Sub
 With Me.TextBox8
     chkval = IsNumeric(.Value)
         chkval = IsNumeric(.Value) And Len(.Value) = 13
     If chkval = False Then
         MsgBox ("ให้ใส่เฉพาะตัวเลขเท่านั้น")
 .Text = Left(.Text, Len(.Text) - 1)
End If
    End With
End Sub

Re: บังคับให้คีย์เฉพาะตัวเลข 13หลักเท่านั้น

Posted: Fri May 21, 2021 2:42 pm
by logic
ลองแบบนี้ครับ 😊

Code: Select all

Private Sub TextBox8_Change()
    If Len(Me.TextBox8.Text) > 13 Then
        Me.TextBox8.Text = Left(Me.TextBox8.Text, 13)
        Exit Sub
    End If
    With Me.TextBox8
        chkval = IsNumeric(.Value)
        If chkval = False Then
             MsgBox ("ให้ใส่เฉพาะตัวเลขเท่านั้น")
            .Text = Left(.Text, Len(.Text) - 1)
        End If
    End With
End Sub