Page 1 of 1

Code VB ต้องการข้อมูลที่กรอกใน textbox ให้เป็นรูปแบบที่กำหนด

Posted: Mon May 06, 2024 5:56 pm
by tigerwit
จากไฟล์ที่แนบ ที่ฟอร์ม FrmEdit
ต้องการเช็คว่า ผู้ใช้งาน กรอกข้อมูลลงใน textbox1 เป็น วันเดือนปี ในรูปแบบ พ.ศ. เท่านั้น
หากไม่ใช่รูปแบบ พ.ศ. ให้แจ้งเตือน เพื่อให้กรอกให้ถูกต้อง จึงสามารถไปกรอกที่ textbox2ได้
จากโค๊ดที่มีตอนนี้ เช็คได้แต่กรณีที่ผู้ใช้งานกรอกข้อมูลที่ไม่ใช่รูปแบบวันที่
แต่หากเป็นวันที่ กรณีเป็นรูปแบบ ค.ศ. (เช่น 2/4/2024) จะไม่สามารถตรวจสอบได้
ต้องปรับโค๊ดอย่างไรครับ

Code: Select all

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    With TextBox1
        If IsDate(.Text) Then
            .Text = Format(DateValue(.Text), "d/mmm/yyyy")
            .BackColor = vbWhite
        Else
            MsgBox "กรุณากรอกวันเดือนปีเป็นรูปแบบ พ.ศ. ตัวอย่างเช่น 2/2/2566"
            .BackColor = vbYellow
            .Value = ""
            Cancel = True
        End If
    End With
End Sub

Re: Code VB ต้องการข้อมูลที่กรอกใน textbox ให้เป็นรูปแบบที่กำหนด

Posted: Tue May 07, 2024 8:36 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    Dim yr As Integer
    With TextBox1
        If IsDate(.Text) Then
            yr = VBA.Year(.Text)
            If yr < 2400 Then
                MsgBox "กรุณากรอกวันเดือนปีเป็นรูปแบบ พ.ศ. ตัวอย่างเช่น 2/2/2566"
                .BackColor = vbYellow
                .Value = ""
                Cancel = True
                Exit Sub
            End If
            .Text = Format(DateValue(.Text), "d/mmm/yyyy")
            .BackColor = vbWhite
'        Else
'            MsgBox "กรุณากรอกวันเดือนปีเป็นรูปแบบ พ.ศ. ตัวอย่างเช่น 2/2/2566"
'            .BackColor = vbYellow
'            .Value = ""
'            Cancel = True
        End If
    End With
End Sub

Re: Code VB ต้องการข้อมูลที่กรอกใน textbox ให้เป็นรูปแบบที่กำหนด

Posted: Tue May 07, 2024 11:25 pm
by tigerwit
ปรับตามคำแนะนำแล้วยังไม่ได้ครับ
พิมพ์ลงใน Textbox1 เป็นรูปแบบวันเดือนปี 2/3/2566 ไม่ผ่าน
แต่พิมพ์ เป็นตัวเลขธรรมดา ผ่าน

Re: Code VB ต้องการข้อมูลที่กรอกใน textbox ให้เป็นรูปแบบที่กำหนด

Posted: Wed May 08, 2024 7:05 am
by snasui
:D ในเครื่องผมทำงานได้ปกติครับ

ไม่ทราบว่าโปรแกรมฟ้องว่าอย่างไร หรือไม่ ช่วยอธิบายรายละเอียดประกอบมาด้วยครับ

Re: Code VB ต้องการข้อมูลที่กรอกใน textbox ให้เป็นรูปแบบที่กำหนด

Posted: Wed May 08, 2024 10:19 am
by tigerwit
ขึ้น Msgbox แจ้งครับ

Re: Code VB ต้องการข้อมูลที่กรอกใน textbox ให้เป็นรูปแบบที่กำหนด

Posted: Wed May 08, 2024 2:46 pm
by snasui
:D Code นั้นเป็นการเช็คว่าตัวแปร yr มีค่าน้อยกว่า 2400 หรือไม่ หากน้อยกว่าแสดงว่าระบุค่าปีผิดพลาด

ลองใช้ MessageBox แสดงค่าตัวแปร yr ตามภาพ จากนั้นทดสอบรันแล้วสังเกตว่าได้ค่าใด น้อยกว่า 2400 หรือไม่ หากระบุปีเป็น 2566 แต่ค่าปีเป็นค่าอื่นแสดงว่ามีสิ่งผิดปกติครับ

Re: Code VB ต้องการข้อมูลที่กรอกใน textbox ให้เป็นรูปแบบที่กำหนด

Posted: Wed May 08, 2024 4:00 pm
by tigerwit
ทดสอบตามแนะนำแล้วครับพบว่าเป็นดังภาพ
เราจะรู้ได้อย่างไรว่า ปัญหานี้เกิดจากอะไร

Re: Code VB ต้องการข้อมูลที่กรอกใน textbox ให้เป็นรูปแบบที่กำหนด

Posted: Wed May 08, 2024 5:08 pm
by snasui
:D เข้าใจว่าเกิดจากการกำหนด Regional and language ไว้เป็นภาษาไทย เครื่องผมกำหนดไว้เป็น English (United Kingdom)

ลองปรับตัวแปร yr ใหม่จากเดิม yr = vba.year(.text) เป็น yr = vba.right(.text,4) ดูครับ

Statement นี้เป็นการตัด String ด้านขวาสุดใน TextBox1 มา 4 อักขระมาตรง ๆ แทนการการสกัดมาด้วยฟังก์ชัน Year ครับ

Re: Code VB ต้องการข้อมูลที่กรอกใน textbox ให้เป็นรูปแบบที่กำหนด

Posted: Sun May 19, 2024 9:53 am
by tigerwit
ได้ตามคำแนะนำ
ขอบพรัคุณอย่างสูงครับ