Page 1 of 1
สอบถาม Code Vba สำหรับ ใช้ Format ตัวเลขใน Textbox
Posted: Sat Mar 22, 2014 8:46 am
by voravit
QA_NetPay_จ่ายสุทธิ.xlsm
รบกวน สอบถาม code สำหรับ Format ตัวเลข ครับ
ผมทำตาม รูปแบบ ด้านล่าง ถ้า กรอกตัวเลข เกิน 10,000.00 รูปแบบ ที่ออกมาจะไม่ เป็น
รูปแบบปกติทั่วไป อย่าง เช่น 23,567.89 เป็นต้น
การใช้งานปกติ ตัวเลขที่ต้องกรอก สูงสุด หลักแสน ครับ
ขอบคุณครับ
Re: สอบถาม Code Vba สำหรับ ใช้ Format ตัวเลขใน Textbox
Posted: Sat Mar 22, 2014 8:50 am
by voravit
Code ที่ใช้อยู่ และ ขอช่วยปรับแก้ครับ
Code: Select all
Private Sub txb2_Change()
If txb2.Value > 999 Then txb2.Value = Format(txb2.Value, ("#,###.##"))
End Sub
ขอบคุณครับ
Re: สอบถาม Code Vba สำหรับ ใช้ Format ตัวเลขใน Textbox
Posted: Sat Mar 22, 2014 9:00 am
by snasui
ตรง Format ลองปรับเป็น
Format(txb2.Value, ("#,##0.00"))
ครับ
Re: สอบถาม Code Vba สำหรับ ใช้ Format ตัวเลขใน Textbox
Posted: Sun Mar 23, 2014 10:56 am
by voravit
ผมเปลี่ยน เงื่อนไข ตาม คำแนะนำที่ให้มา แต่ ผลออกมา ก็ยังคงเหมือนเดิม ผมก็เลยลอง ปรับ code เป็น
ผล คือ ถ้า จำนวนเป็น สำหรับ หลักหมื่น ผลคือได้ แต่ หลักพัน และ หลักแสน ผลเครื่องหมายคั่น หลักพันได้ แต่ ทศนิยมไม่ได้ครับ
และ ขอสอบถามอีกข้อครับ คือ
สูตร ที่ให้แสดงค่า ใน txb5 คือ
txb5.Value = (txb1.Value * txb2.Value) - (txb3.Value) + (txb4.Value)
ถ้า เผลอลืมกรอก ข้อมูลลง ใน txb1 หรือ txb2 แล้ว ไปสั่งให้คำนวน ก็จะ คำนวนไม่ได้ และ ขึ้น debug
จะต้อง เพิ่ม หรือ แก้ไข code อย่างไร ที่ ถ้า txb1 ยังไม่ได้ กรอก จะข้ามไป และ ใช้คำสั่ง อื่นๆไม่ได้ ครับ
ขอบคุณครับ
Code: Select all
Private Sub txb2_Change()
If txb2.Value > 999 And txb2.Value < 10000 Then txb2.Value = Format(txb2.Value, ("#,##0"))
If txb2.Value > 9999 And txb2.Value < 100000 Then
txb2.Value = Format(txb2.Value, ("##,##0.##"))
End If
If txb2.Value > 99999 And txb2.Value < 1000000 Then
txb2.Value = Format(txb2.Value, ("###,##0"))
End If
End Sub
Code: Select all
txb5.Value = (txb1.Value * txb2.Value) - (txb3.Value) + (txb4.Value)
Re: สอบถาม Code Vba สำหรับ ใช้ Format ตัวเลขใน Textbox
Posted: Sun Mar 23, 2014 11:35 am
by snasui
voravit wrote:ผมเปลี่ยน เงื่อนไข ตาม คำแนะนำที่ให้มา แต่ ผลออกมา ก็ยังคงเหมือนเดิม ผมก็เลยลอง ปรับ code เป็น
ผล คือ ถ้า จำนวนเป็น สำหรับ หลักหมื่น ผลคือได้ แต่ หลักพัน และ หลักแสน ผลเครื่องหมายคั่น หลักพันได้ แต่ ทศนิยมไม่ได้ครับ
ให้ใช้ Event ที่เป็น AfterUpdate แทน Change ครับ เป็น
Code: Select all
Private Sub txb2_AfterUpdate()
txb2.Value = Format(txb2.Value, "#,##0.00")
End Sub
voravit wrote:สูตร ที่ให้แสดงค่า ใน txb5 คือ
txb5.Value = (txb1.Value * txb2.Value) - (txb3.Value) + (txb4.Value)
ถ้า เผลอลืมกรอก ข้อมูลลง ใน txb1 หรือ txb2 แล้ว ไปสั่งให้คำนวน ก็จะ คำนวนไม่ได้ และ ขึ้น debug
จะต้อง เพิ่ม หรือ แก้ไข code อย่างไร ที่ ถ้า txb1 ยังไม่ได้ กรอก จะข้ามไป และ ใช้คำสั่ง อื่นๆไม่ได้ ครับ
ขอบคุณครับ
ตัวอย่างการปรับ Code ครับ
Code: Select all
txb5.Value = Val(txb1.Value) * Val(txb2.Value) - Val(txb3.Value) + Val(txb4.Value)
สำหรับเครื่องหมาย # ที่ใช้ในการกำหนด Format จะแทนตัวเลขทุกตัวที่จำเป็นต้องให้แสดงหากอยู่ในตำแหน่งที่เป็นสาระสำคัญ ยกตัวอย่างเช่น
หากกำหนด Format เป็น #,###.##
1000.10 ผลลัพธ์จะได้เป็น 1,000.1 เลข 0 สุดท้ายจะหายไปเพราะไม่ใช่ตำแหน่งที่เป็นสาระสำคัญตามประเด็นนี้
01000.10 ผลลัพธ์จะแสดงเป็น 1,000.1 เลข 0 ด้านหน้าและด้านหลังจะหายไป พราะไม่ใช่ตำแหน่งที่เป็นสาระสำคัญตามประเด็นนี้
ตัวอย่างการกำหนด Format ทั้งหลายสามารถดูได้จากการคลิกขวาในเซลล์ใด ๆ แล้วเข้าเมนู Format Cells > Number > Custom
Re: สอบถาม Code Vba สำหรับ ใช้ Format ตัวเลขใน Textbox
Posted: Sun Mar 23, 2014 6:20 pm
by voravit
ขอบคุณครับ
ผมใช้ code ที่ให้มาปรับอีกเล็กน้อย ตอนนี้แก้ปัญหาได้แล้วครับ
ขอบคุณเป็นอย่างสูงครับ
Code: Select all
txb5.Value = Val((txb1.Value) * (txb2.Value)) - Val(txb3.Value) + Val(txb4.Value)
Re: สอบถาม Code Vba สำหรับ ใช้ Format ตัวเลขใน Textbox
Posted: Tue Mar 25, 2014 4:44 pm
by voravit
ขอ สอบถามเพิ่มเติม ครับ
ผมทำไฟล์นี้ ด้วย excel 2010 บน windows 7 ครับ แต่ พอนำไฟล์นี้ไปเปิดใช้ ด้วย excel 2010 บน windows XP ปรากฏว่าใช้ไม่ได้
คือ
ส่วนที่ใช้ DTpicker และ textbox ที่ให้ Format ตัวเลข แก้ไขเบื้องต้น คือ ยกเลิกการ ใช้ DTpicker มาเป็นการกรอก วัน เดือน ปี แบบทั่วไป
และ ยกเลิก Format ตัวเลขที่ต้องการให้เป็น 12,345.00 กลับมาเป็น 12345
อยากสอบถามว่าถ้าต้องการให้ ตัวเลข เป็น 12,345.00 เมื่อเปิดไฟล์นี้ บน Windows จะต้อง เขียน code อย่างไร ครับ
ขอบคุณครับ
Code: Select all
Private Sub txb4_Change()
If txb4.Value < 1000 Then txb4.Value = Format(txb4.Value, "#00.00")
If txb4.Value > 999 Then txb4.Value = Format(txb4.Value, "#,##0.00")
End Sub
Re: สอบถาม Code Vba สำหรับ ใช้ Format ตัวเลขใน Textbox
Posted: Tue Mar 25, 2014 5:16 pm
by snasui
ให้ใช้ Event After Update แทน Event Change เหมือนที่ผมตอบไปแล้วตามด้านบน
การเปลี่ยน Format ใน Form
ควรเปลี่ยนเมื่อเปิด Form ไม่จำเป็นต้องเปลี่ยนตั้งแต่เปิดไฟล์ การเปลี่ยนเมื่อเปิด Form ให้กำหนดที่ UserForm_Initialize ครับ เช่น
Code: Select all
Private Sub UserForm_Initialize()
userform1.textbox1.text = format(textbox1.text,"#,##0.00")
End Sub
Re: สอบถาม Code Vba สำหรับ ใช้ Format ตัวเลขใน Textbox
Posted: Sun Mar 30, 2014 3:43 pm
by voravit
ขอบคุณครับ เอาโค็ด ที่แนะนำไปปรับใช้ได้แล้วครับ