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
ใส่ตัวเลขก็จะโดนลบไปด้วยเหมือนดังในรูปครับ
Re: บังคับให้คีย์เฉพาะตัวเลข 13หลักเท่านั้น
Posted: Fri May 21, 2021 12:04 pm
by logic
เห็นแต่ภาพผมช่วยไม่ได้ ขอผ่านครับ

Re: บังคับให้คีย์เฉพาะตัวเลข 13หลักเท่านั้น
Posted: Fri May 21, 2021 12:37 pm
by snasui

ควรตัดไฟล์มาเฉพาะที่เป็นปัญหามาเป็นตัวอย่าง จะได้สะดวกในการตอบของเพื่อนสมาชิกครับ
นอกจากนี้การควรจะ 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