Đị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.
 
cái này nếu để sự kiện textbox_change thì có lẽ không được, bởi em muốn khi người nhập liệu có thể kiểm tra luôn.
 
Upvote 0

File đính kèm

  • Hoi bai.xls
    26 KB · Đọc: 39
Upvote 0
Tôi thì làm hơi khác 1 chút
Đâu tiên tôi cho các TextBox nhập liệu vào 1 Frame (TextBox tính tổng nằm ngoài)

untitled.JPG

Tiếp theo tôi dùng 2 đoạn code này:
1> Code trong Class
PHP:
Public WithEvents tb As MSForms.TextBox
Private Sub tb_Change()
  Dim Ctl As Control, iSum As Double
  On Error Resume Next
  For Each Ctl In UserForm1.Frame1.Controls
    iSum = iSum + 1 * Ctl.Text
    Ctl.Text = Format(1 * Ctl.Text, "#,##0")
  Next
  UserForm1.txtSum = Format(iSum, "#,##0")
End Sub

2> Code trong UserForm

PHP:
Dim Obj() As New Class1
Private Sub UserForm_Initialize()
  Dim i As Integer, Ctl As Control
  For Each Ctl In Me.Frame1.Controls
    ReDim Preserve Obj(i)
    Set Obj(i).tb = Ctl
    i = i + 1
  Next
End Sub
Xong! 100 textbox thì cũng chỉ bi nhiêu đó code mà thôi
 

File đính kèm

  • ClassExample.xls
    37.5 KB · Đọc: 87
Lần chỉnh sửa cuối:
Upvote 0
Tôi chỉ đề cập đến ý tác giả thôi , chứ "buồn buồn" thì thiếu gì cách "buồn buồn" . Còn việc bẫy cách đó tác giả thừa sức
Thì mình cứ cho là "KHÔNG BAO GIỜ BUỒN" đi, nhưng NHẬP NHẦM thì chắc là điều có thể chứ
Ẹc... Ẹc...
 
Upvote 0
Hỏi về định dạng số trên textbox

Các thầy cho em hỏi thêm. Em muốn định dạng số liệu trên Form thì làm thế nào?
 

File đính kèm

  • vdu.rar
    85.3 KB · Đọc: 33
Upvote 0
Các thầy cho em hỏi thêm. Em muốn định dạng số liệu trên Form thì làm thế nào?
Dùng sự kiện này:
PHP:
Private Sub Gia_AfterUpdate()
  On Error Resume Next
  Gia.Text = Format(1 * Gia.Text, "#,##0.00")
End Sub
Gõ xong bấm Enter 1 cái là ra kết quả
Lưu ý: Định dạng #,##0.00 hay #.##0,00 là tùy thuộc Control Panel trên máy bạn quy định thế nào (không thể tùy tiên)

http://www.giaiphapexcel.com/forum/showthread.php?4629-Định-dạng-số-trong-textbox/page3
 
Lần chỉnh sửa cuối:
Upvote 0
Các thầy cho em hỏi thêm. Em muốn định dạng số liệu trên Form thì làm thế nào?
Tôi thấy chỉ nhập tên hàng và giá không thì nhập đại trên sh.
Bạn này tôi thấy hỏi nhiều topic và nhiều nick.
Trước mắt nên tập trùng vào kiến thức mình biết và triển khai tạo những báo cáo theo yêu cầu đã. Từ từ rồi sẽ sang form vì không dễ thiết kế form trên ex.
Trong cùng 1 lúc mà muốn ôm vào.
1/ Lọc, trích xuất BC
2/ Giấu sh
3/ Tạo pass
4/ Tạo form hạn chế.
5/ Tạo menu start
...
Nhiều lúc mở file bạn hỏi thấy muốn ...
Học hỏi thì cũng nên mở với mọi người như vậy mọi người mới mở với bạn. Thú thật tôi cũng chả biết bạn nắm đến đâu mà hướng dẫn.
Vài lời góp ý với bạn.
Nếu sai box và có gì ... mong BQT move hay erase giúp. Cám ơn BQT.
 
Upvote 0
Tôi thì làm hơi khác 1 chút
Đâu tiên tôi cho các TextBox nhập liệu vào 1 Frame (TextBox tính tổng nằm ngoài)

View attachment 59462

Tiếp theo tôi dùng 2 đoạn code này:
1> Code trong Class
PHP:
Public WithEvents tb As MSForms.TextBox
Private Sub tb_Change()
  Dim Ctl As Control, iSum As Double
  On Error Resume Next
  For Each Ctl In UserForm1.Frame1.Controls
    iSum = iSum + 1 * Ctl.Text
    Ctl.Text = Format(1 * Ctl.Text, "#,##0")
  Next
  UserForm1.txtSum = Format(iSum, "#,##0")
End Sub

2> Code trong UserForm

PHP:
Dim Obj() As New Class1
Private Sub UserForm_Initialize()
  Dim i As Integer, Ctl As Control
  For Each Ctl In Me.Frame1.Controls
    ReDim Preserve Obj(i)
    Set Obj(i).tb = Ctl
    i = i + 1
  Next
End Sub
Xong! 100 textbox thì cũng chỉ bi nhiêu đó code mà thôi

Cảm ơn một cách hay của Anh. Hiện tại thì em cùng cách là nhập vào textbox và cho gắn dữ liệu vào sheets ( như file chương trình kiểm phiếu em đã gửi lên http://www.giaiphapexcel.com/forum/showthread.php?46553-Chương-trình-kiểm-phiếu) bởi cách textbox nằm chung 1 frame nếu anh làm vậy em có thêm một textbox nữa như trong file thì nó cộng luôn dữ liệu và nếu để sang frame khác thì khi em bấm tabindex làm sao cho nó nhảy theo thứ tự như trong file em.
 
Upvote 0
Cảm ơn một cách hay của Anh. Hiện tại thì em cùng cách là nhập vào textbox và cho gắn dữ liệu vào sheets ( như file chương trình kiểm phiếu em đã gửi lên http://www.giaiphapexcel.com/forum/showthread.php?46553-Chương-trình-kiểm-phiếu) bởi cách textbox nằm chung 1 frame nếu anh làm vậy em có thêm một textbox nữa như trong file thì nó cộng luôn dữ liệu và nếu để sang frame khác thì khi em bấm tabindex làm sao cho nó nhảy theo thứ tự như trong file em.
Ah... không nhất thiết phải cho các TextBox vào chung 1 Frame đâu, miễn sao nhóm TextBox ấy phải có gì phân biệt so với các TextBox khác (chẳng hạn là tên hoặc ta đánh dấu vào Tag.. vân vân...) ---> Khi bạn dùng vòng lập duyệt qua các TextBox, ta sẽ dùng các dấu hiệu nhận biết này mà "thu gom"
--------------
Bạn xem tôi sửa lại file trên, các textbox không nằm trong Frame nào cả
PHP:
Dim Obj() As New Class1
Private Sub UserForm_Initialize()
  Dim i As Integer, Ctl As Control
  For Each Ctl In Me.Controls
    If TypeOf Ctl Is MSForms.TextBox Then
      If Ctl.Tag = "a" Then
        ReDim Preserve Obj(i)
        Set Obj(i).tb = Ctl
        i = i + 1
      End If
    End If
  Next
End Sub
PHP:
Public WithEvents tb As MSForms.TextBox
Private Sub tb_Change()
  Dim Ctl As Control, iSum As Double
  On Error Resume Next
  For Each Ctl In UserForm1.Controls
    If TypeOf Ctl Is MSForms.TextBox Then
      If Ctl.Tag = "a" Then
        iSum = iSum + 1 * Ctl.Text
        Ctl.Text = Format(1 * Ctl.Text, "#,##0")
      End If
    End If
  Next
  UserForm1.txtSum = Format(iSum, "#,##0")
End Sub
Tùy biến thoải mái mà
 

File đính kèm

  • ClassExample_2.xls
    36.5 KB · Đọc: 60
Lần chỉnh sửa cuối:
Upvote 0
Thế thì quá hay rồi. Xin cảm ơn anh về cách giải quyết này. Trước đây cái gì xử lý không được trên userform thì em cứ gắn xuống sheet hết, được cái nó cũng dễ làm đối với người chưa rành.
 
Upvote 0
Code do bác Mr Okebab cung cấp, để định dạng kiểu ngày __/__/____ cho textbox:
PHP:
Public Function ED(Ngay)
'    Dim orgStart As Byte
    Dim i As Integer
    Dim Ngay1 As String
    Ngay = Ngay & "__________"
    For i = 1 To Len(Ngay)
        Select Case Mid$(Ngay, i, 1)
        Case "_", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
            Ngay1 = Ngay1 & Mid(Ngay, i, 1)
        End Select
        If Len(Ngay1) = 8 Then Exit For
    Next
    ED = Mid$(Ngay1, 1, 2) & "/" & Mid$(Ngay1, 3, 2) & "/" & Mid$(Ngay1, 5, 4)
''
    orgStartHT = InStr(1, ED, "_")
    If orgStartHT = 0 Then orgStartHT = 11
    If orgStartHT > InStr(1, ED, "/_") And orgStartHT < 8 Then
        orgStartHT = orgStartHT - 1
    End If
End Function

Xin hỏi các bác có cách nào đơn giản, dễ hiểu hơn không? Khi tôi nhập 01012011 sẽ có kết quả là 01/01/2011 theo địng dạng của máy tính, giống như trường hợp làm với định dạng kiểu số:
PHP:
Txt_Sotien.Text = FormatNumber(Txt_Sotien.Text, 0, vbTrue, vbTrue, vbTrue)
và khi gọi lại giá trị số:
PHP:
=Val(FormatNumber(Txt_Sotien.Text, 0, vbFalse, vbFalse, vbFalse))

Cảm ơn!
 
Upvote 0
Các anh chị giúp em với ạ.
em muốn trong textbox hiện số 20%, em đã thử như sau mà không được ạ
Me.txt_TS_ThueTNDN.Value = Format(txt_TS_ThueTNDN.Value, "#%")
em phải làm như thế nào để được như ý ạ.
code trên của em nó hiện là 0.2 chứ không phải 20% như ý muốn ạ. Mong các anh chị nhiệt tình giúp đỡ ạ, em xin chân thành cảm ơn nhiều ạ.
 
Upvote 0
Các anh chị giúp em với ạ.
em muốn trong textbox hiện số 20%, em đã thử như sau mà không được ạ
Me.txt_TS_ThueTNDN.Value = Format(txt_TS_ThueTNDN.Value, "#%")
em phải làm như thế nào để được như ý ạ.
code trên của em nó hiện là 0.2 chứ không phải 20% như ý muốn ạ. Mong các anh chị nhiệt tình giúp đỡ ạ, em xin chân thành cảm ơn nhiều
Không có file để thử thì hơi khó.
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Web KT

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

Back
Top Bottom