:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

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

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
User avatar
tigerwit
Bronze
Bronze
Posts: 451
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

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

#1

Post 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
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

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

#2

Post 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
User avatar
tigerwit
Bronze
Bronze
Posts: 451
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

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

#3

Post by tigerwit »

ปรับตามคำแนะนำแล้วยังไม่ได้ครับ
พิมพ์ลงใน Textbox1 เป็นรูปแบบวันเดือนปี 2/3/2566 ไม่ผ่าน
แต่พิมพ์ เป็นตัวเลขธรรมดา ผ่าน
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

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

#4

Post by snasui »

:D ในเครื่องผมทำงานได้ปกติครับ

ไม่ทราบว่าโปรแกรมฟ้องว่าอย่างไร หรือไม่ ช่วยอธิบายรายละเอียดประกอบมาด้วยครับ
User avatar
tigerwit
Bronze
Bronze
Posts: 451
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

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

#5

Post by tigerwit »

ขึ้น Msgbox แจ้งครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

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

#6

Post by snasui »

:D Code นั้นเป็นการเช็คว่าตัวแปร yr มีค่าน้อยกว่า 2400 หรือไม่ หากน้อยกว่าแสดงว่าระบุค่าปีผิดพลาด

ลองใช้ MessageBox แสดงค่าตัวแปร yr ตามภาพ จากนั้นทดสอบรันแล้วสังเกตว่าได้ค่าใด น้อยกว่า 2400 หรือไม่ หากระบุปีเป็น 2566 แต่ค่าปีเป็นค่าอื่นแสดงว่ามีสิ่งผิดปกติครับ
You do not have the required permissions to view the files attached to this post.
User avatar
tigerwit
Bronze
Bronze
Posts: 451
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

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

#7

Post by tigerwit »

ทดสอบตามแนะนำแล้วครับพบว่าเป็นดังภาพ
เราจะรู้ได้อย่างไรว่า ปัญหานี้เกิดจากอะไร
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

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

#8

Post by snasui »

:D เข้าใจว่าเกิดจากการกำหนด Regional and language ไว้เป็นภาษาไทย เครื่องผมกำหนดไว้เป็น English (United Kingdom)

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

Statement นี้เป็นการตัด String ด้านขวาสุดใน TextBox1 มา 4 อักขระมาตรง ๆ แทนการการสกัดมาด้วยฟังก์ชัน Year ครับ
User avatar
tigerwit
Bronze
Bronze
Posts: 451
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

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

#9

Post by tigerwit »

ได้ตามคำแนะนำ
ขอบพรัคุณอย่างสูงครับ
Post Reply