Định dạng số trong textbox

Liên hệ QC

tuanfkt

Thành viên chính thức
Tham gia
22/9/06
Bài viết
69
Được thích
8
Nghề nghiệp
Kế toán
Chào cả nhà! mình có một yêu cầu nho nhỏ thế này nhưng chẳng biết làm thế nào? Có 1 textbox để nhập số tiền, vậy định dạng textbox đó như thế nào để khi nhập số vào nó tự động phân tách thành số hàng ngàn, triệu, bởi dấu ".", hoặc là "," (separator). Cảm ơn mọi người.
 
Bạn dùng đoạn code này: giả sử tên textbox nhập tiền là Textbox6

Mã:
[color=darkblue]Private[/color] [color=darkblue]Sub[/color] TextBox6_Change()
    TextBox6.Value = Format(TextBox6.Value, "$ #,##0")
[color=darkblue]End[/color] [color=darkblue]Sub[/color]

Lưu ý là nếu bạn nhập có phần lẻ (sau dấu . ) chỉ thực hiện được với số tiền nguyên thôi.

Thân.
 
Upvote 0
SoiBien đã viết:
Bạn dùng đoạn code này: giả sử tên textbox nhập tiền là Textbox6

Mã:
[COLOR=darkblue]Private[/COLOR] [COLOR=darkblue]Sub[/COLOR] TextBox6_Change()
    TextBox6.Value = Format(TextBox6.Value, "$ #,##0")
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]Sub[/COLOR]

Lưu ý là nếu bạn nhập có phần lẻ (sau dấu . ) chỉ thực hiện được với số tiền nguyên thôi.

Thân.

1/ Lưu ý sự kiện Change của TextBox nếu không sẽ báo lỗi. Cách tốt nhất nên thêm vào câu lệnh sau cho chắc ăn
Mã:
[COLOR=darkblue]Private[/COLOR] [COLOR=darkblue]Sub[/COLOR] TextBox6_Change()
    On Error Resume Next ' Nếu gặp lỗi thì lờ đi coi như không có lỗi
    TextBox6.Value = Format(TextBox6.Value, "#,##0")
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]Sub[/COLOR]

2/ Tốt nhất nên đặt câu lệnh trên trong sự kiện AfterUpdate() của TextBox6

Thân
 
Upvote 0
Rất cám ơn bạn
anhphuong đã viết:
1/ Lưu ý sự kiện Change của TextBox nếu không sẽ báo lỗi. Cách tốt nhất nên thêm vào câu lệnh sau cho chắc ăn
Mã:
[COLOR=darkblue]Private[/COLOR] [COLOR=darkblue]Sub[/COLOR] TextBox6_Change()
    On Error Resume Next ' Nếu gặp lỗi thì lờ đi coi như không có lỗi
    TextBox6.Value = Format(TextBox6.Value, "#,##0")
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]Sub[/COLOR]
[/qoute]

tuy nhiên
[qoute]2/ Tốt nhất nên đặt câu lệnh trên trong sự kiện AfterUpdate() của TextBox6
Bà con mình khoái nhập tới đâu thấy tới đó cho dễ nhập, đỡ phải đếm lại mất công

Bạn có phương pháp nào cải tiến cái sự kiện đó cho nó có thể nhập được cả số tiền lẻ không nhỉ, tien VN chắc không sợ, lỡ chơi ngoại tệ thì bó tay???
 
Upvote 0
SoiBien đã viết:
Rất cám ơn bạn

Bà con mình khoái nhập tới đâu thấy tới đó cho dễ nhập, đỡ phải đếm lại mất công

Bạn có phương pháp nào cải tiến cái sự kiện đó cho nó có thể nhập được cả số tiền lẻ không nhỉ, tien VN chắc không sợ, lỡ chơi ngoại tệ thì bó tay???

Thì thêm mấy số 0 vào sau cái format thôi

TextBox6.Value = Format(TextBox6.Value,"#,##0.00") ' Cho hai số lẻ


Thân
 
Lần chỉnh sửa cuối:
Upvote 0
anhphuong đã viết:
Thì thêm mấy số 0 vào sau cái format thôi

TextBox6.Value = Format(TextBox6.Value,"#,##0.00") ' Cho hai số lẻ


Thân

Nếu để ở onchange thì không nhập được số lẻ như vậy bạn ơi!
 
Upvote 0
SoiBien đã viết:
Rất cám ơn bạn

Bà con mình khoái nhập tới đâu thấy tới đó cho dễ nhập, đỡ phải đếm lại mất công

Bạn có phương pháp nào cải tiến cái sự kiện đó cho nó có thể nhập được cả số tiền lẻ không nhỉ, tien VN chắc không sợ, lỡ chơi ngoại tệ thì bó tay???

Mình nghĩ sử dụng sự kiện AfterUpdate thì tốt hơn. Đây là ý kiến của riêng mình và mình thấy mọi người vẫn làm thế (tất nhiên là hợp lý rồi)

Thân!
 
Upvote 0
Mr Okebab đã viết:
Mình nghĩ sử dụng sự kiện AfterUpdate thì tốt hơn. Đây là ý kiến của riêng mình và mình thấy mọi người vẫn làm thế (tất nhiên là hợp lý rồi)

Thân!

Ý là có cách hay hơn không, như cái Calculator chẳng hạn, mình gõ tới đâu cái . hay , nó hiện lên rõ ràng. Nhập nhiều số 0 hay cứ phải đếm lại xem đã đủ chưa???
 
Upvote 0
Bạn thử code sau:
Mã:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    On Error Resume Next
    TextBox1.Text = FormatNumber(TextBox1, 2, , , vbTrue)
End Sub
Khi bạn nhập số vào Textbox1 xong, nhấn Enter thì các số trong Textbox1 sẽ được định dạng lại. Tuy nhiên trong UserForm phải có thêm ít nhất 1 Object nữa để nhận Focus (Command chẳng hạn...)
 
Upvote 0
Vậy định dạng ngày dd/mm/yyy thì phải làm sao ? giúp với, mình làm vậy mà không được:
TextBox6.Date = Format(TextBox6.Date,"dd/mm/yyyy")
 
Upvote 0
tuanfkt đã viết:
Vậy định dạng ngày dd/mm/yyy thì phải làm sao ? giúp với, mình làm vậy mà không được:
TextBox6.Date = Format(TextBox6.Date,"dd/mm/yyyy")

Textbox default không có thuộc tính date, vậy đoạn code trên bạn phải dùng như thế này.
TextBox6.Text = Format(TextBox6.Text,"dd/mm/yyyy")

Thân
 
Upvote 0
Bạn SoiBien ơi! mình đã làm vậy nhưng không được.
khi nhập số 1 vào thì nó hiện ra cả dãy: 31/12/1899, nếu nhập 12 tì nó cho ra 31/12/18992, nếu gõ số 2 thì nó sổ ra 01/01/1900.
Cảm ơn SoiBien và nvson.
 
Upvote 0
tuanfkt đã viết:
Bạn SoiBien ơi! mình đã làm vậy nhưng không được.
khi nhập số 1 vào thì nó hiện ra cả dãy: 31/12/1899, nếu nhập 12 tì nó cho ra 31/12/18992, nếu gõ số 2 thì nó sổ ra 01/01/1900.
Cảm ơn SoiBien và nvson.

Đúng vậy đó bạn ơi! Câu lệnh trên bạn phải để ở sự kiên Textbox6_AfterUpdate thôi, không để ở Textbox6_Change được.
Thân.

P/S: Bạn tham khảo file Textbox ngày tháng trong form của MrOKeBab nhé
http://www.giaiphapexcel.com/forum/showthread.php?t=4699

Thread chính ở đâu mình cũng không nhớ, tuy nhiên file trên có textbox đó để bạn tham khảo.
 
Lần chỉnh sửa cuối:
Upvote 0
Tại sao tôi format textbox như sau:
Private Sub Txt1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Txt1.Text = Format(Val(Txt1.Value), "#,###,##0")
Tong.Value = Format(Val(Txt1.Value) + Val(Txt2.Value), "#,###,##0")
End Sub

Nhưng textbox Tong lại chỉ tính giá trị trước dấu ","
Ví dụ nhập: 123456 (123.456) thì khi cộng trong textbox Tong = 123 nó không hiểu 456 xem như số lẻ. Có cách nào để format và cộng vẫn hiển thị đúng
 
Upvote 0
Tại sao tôi format textbox như sau:


Nhưng textbox Tong lại chỉ tính giá trị trước dấu ","
Ví dụ nhập: 123456 (123.456) thì khi cộng trong textbox Tong = 123 nó không hiểu 456 xem như số lẻ. Có cách nào để format và cộng vẫn hiển thị đúng
Thay đổi
"#,###,##0"
thành
"#,###.##0"
xem sao
 
Upvote 0
Thay đổi
"#,###,##0"
thành
"#,###.##0"
xem sao

Cũng chưa chắc được anh à.
Anh thử nhân với 1 xem sao nhé.

Mã:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1 = Format(TextBox1, "#,###,##0")
tong = Format(TextBox1 * 1 + TextBox2 * 1, "#,###,##0")
End Sub
 
Upvote 0
Cũng chưa chắc được anh à.
Anh thử nhân với 1 xem sao nhé.

Mã:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1 = Format(TextBox1, "#,###,##0")
tong = Format(TextBox1 * 1 + TextBox2 * 1, "#,###,##0")
End Sub
Phải thế này chứ bạn
TextBox1.Text = Format(Val(TextBox1.Value), "#,###.##0")
Tong.Value = Format(Val(TextBox1.Value) * 1 + Val(TextBox2.Value) * 1, "#,###.##0")
Mẫu này của Yeudoi mình chỉ thay dấu phẩy (,) bằng dấu chấm (.) thôi
 
Upvote 0
Theo tôi nghĩ không phải do dấu (,) hay dấu (.) đâu bởi tôi đã thay rồi có lẽ nhân với 1 là đúng để tôi thử xem.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom