Định dạng kiểu số trên textbox

Liên hệ QC

nvthien1967

Thành viên mới
Tham gia
27/3/07
Bài viết
36
Được thích
168
Chào ACE. Xin hổ trợ như sau:
Tôi tạo form xuất hóa đơn (10 dòng). Sau khi nhập SL-ĐG-TT thì format kiểu số OK, nhưng sang dòng 2 thì dòng tổng chỉ lấy giá trị trước dấu phân cách số dù đã dùng "CDbl" để chuyển trước khi tính.
Ví dụ: Dòng 1 số nhập 1000 - Dùng Format số sau update hiển thị 1,000 - Dòng tổng hiển thị 1,000
Dòng 2 số nhập 2000 - Dùng Format số sau update hiển thị 2,000 - Dòng tổng hiển thị 2,001
 
Nhờ ACE hổ trợ định dạng kiểu số sau khi nhập textbox cho dễ nhìn & phải tính tổng đúng.
 

File đính kèm

  • KHO-HANG.XLS
    2.3 MB · Đọc: 20
Tôi chỉ giúp 1 lần thôi.
Thực ra ban đầu tôi còn không muốn xem. Thời nào rồi mà còn dùng VNI. Tôi rất dị ứng với những cái này.

VNI.png

Tôi viết nhanh, không suy nghĩ nhiều, không tìm cách tối ưu, chỉ giải quyết vấn đề duy nhất của bạn. Những thứ khác chờ ngời khác.

Tôi đề nghị
1. Xóa Sub DinhDangSo cũ, xóa ChuyenSo.

2. Nói nôm na thì giá trị số do người dùng nhập (dùng để tính toán) thì LƯU TRỮ trong thuộc tính TAG của mỗi textbox, còn giá trị sau khi định dạng thì chèn vào thuộc tính VALUE cho bàn dân thiên hạ chiêm ngưỡng.
Mã:
Sub DinhDangSo(ByVal textbox_prefix As String, ByVal chiso As Long)
Dim k As Long, tatca As Double, thue As Double, tc As Double
    With Me.Controls(textbox_prefix & chiso)
        .Tag = .Value
        .Value = Format(.Value, "#,###")
    End With
    With Me.Controls("TriGia" & chiso)
        .Value = Round(Val(Me.Controls("SL" & chiso).Tag) * Val(Me.Controls("DG" & chiso).Tag), 2)
        .Tag = .Value
        .Value = Format(.Value, "#,###")
    End With
    For k = 1 To 10
        tatca = tatca + Val(Me.Controls("TriGia" & k).Tag)
    Next k
    CONG.Value = Format(tatca, "#,###")
    thue = Round((tatca * Val(VAT.Value)) / 100, 2)
    ThueVAT.Value = Format(thue, "#,###")
    tc = Round(tatca + (tatca * Val(VAT.Value)) / 100, 2)
    TongCong.Value = Format(tc, "#,###")
    BangChu.Value = USD(tc)
'    If PT_TToan.Value = "Tieàn ñoàng" Then
'        BangChu.Value = VND(tc)
'        ThueVAT.Value = Format(Round((tatca * VAT.Value) / 100, 0), "#,###")
'    End If
End Sub

Private Sub DG1_AfterUpdate()
    On Error Resume Next
    Call DinhDangSo("DG", 1)
End Sub

Private Sub SL1_AfterUpdate()
    On Error Resume Next
    Call DinhDangSo("SL", 1)
End Sub

Các DG2_AfterUpdate, DG3_AfterUpdate, ..., DG10_AfterUpdate tương tự DG1_AfterUpdate

Các SL2_AfterUpdate, SL3_AfterUpdate, ..., SL10_AfterUpdate tương tự SL1_AfterUpdate
 
Lần chỉnh sửa cuối:
Tôi chỉ giúp 1 lần thôi.
Thực ra ban đầu tôi còn không muốn xem. Thời nào rồi mà còn dùng VNI. Tôi rất dị ứng với những cái này.

View attachment 278561

Tôi viết nhanh, không suy nghĩ nhiều, không tìm cách tối ưu, chỉ giải quyết vấn đề duy nhất của bạn. Những thứ khác chờ ngời khác.

Tôi đề nghị
1. Xóa Sub DinhDangSo cũ, xóa ChuyenSo.

2. Nói nôm na thì giá trị số do người dùng nhập (dùng để tính toán) thì LƯU TRỮ trong thuộc tính TAG của mỗi textbox, còn giá trị sau khi định dạng thì chèn vào thuộc tính VALUE cho bàn dân thiên hạ chiêm ngưỡng.
Mã:
Sub DinhDangSo(ByVal textbox_prefix As String, ByVal chiso As Long)
Dim k As Long, tatca As Double, thue As Double, tc As Double
    With Me.Controls(textbox_prefix & chiso)
        .Tag = .Value
        .Value = Format(.Value, "#,###")
    End With
    With Me.Controls("TriGia" & chiso)
        .Value = Round(Val(Me.Controls("SL" & chiso).Tag) * Val(Me.Controls("DG" & chiso).Tag), 2)
        .Tag = .Value
        .Value = Format(.Value, "#,###")
    End With
    For k = 1 To 10
        tatca = tatca + Val(Me.Controls("TriGia" & k).Tag)
    Next k
    CONG.Value = Format(tatca, "#,###")
    thue = Round((tatca * Val(VAT.Value)) / 100, 2)
    ThueVAT.Value = Format(thue, "#,###")
    tc = Round(tatca + (tatca * Val(VAT.Value)) / 100, 2)
    TongCong.Value = Format(tc, "#,###")
    BangChu.Value = USD(tc)
'    If PT_TToan.Value = "Tieàn ñoàng" Then
'        BangChu.Value = VND(tc)
'        ThueVAT.Value = Format(Round((tatca * VAT.Value) / 100, 0), "#,###")
'    End If
End Sub

Private Sub DG1_AfterUpdate()
    On Error Resume Next
    Call DinhDangSo("DG", 1)
End Sub

Private Sub SL1_AfterUpdate()
    On Error Resume Next
    Call DinhDangSo("SL", 1)
End Sub

Các DG2_AfterUpdate, DG3_AfterUpdate, ..., DG10_AfterUpdate tương tự DG1_AfterUpdate

Các SL2_AfterUpdate, SL3_AfterUpdate, ..., SL10_AfterUpdate tương tự SL1_AfterUpdate
Cám ơn Bạn đã trợ giúp.
 
1. Cám ơn Bạn đã hổ trợ, code chạy OK. Sau khi ghi data vào file về nguyên tắc xóa trắng textbox nhưng các textbox "TriGia" không xóa (TriGia1.Value="")
2. Tôi cũng muốn dùng unicode nhưng label không cho (vni thì OK). Xin hổ trợ.
 
2. Tôi cũng muốn dùng unicode nhưng label không cho (vni thì OK). Xin hổ trợ.
Không gõ trong cửa sổ Properties. Click 1 lần để chọn CommandButton hoặc Label -> click lần nữa để vào trạng thái chỉnh sửa Caption -> gõ để chỉnh sửa. Tất nhiên phải chọn phông chữ thích hợp trong cửa sổ Properties, vd. Times New Roman.
 
Cám ơn bạn Batman1. Đã dùng được unicode theo như bạn hướng dẫn. Chỉ còn textbox TriGia không xoá trắng để nhập phiếu mới dù đã có code TriGia1=“”
 
Cám ơn bạn Batman1. Đã dùng được unicode theo như bạn hướng dẫn. Chỉ còn textbox TriGia không xoá trắng để nhập phiếu mới dù đã có code TriGia1=“”
Bạn hỏi kiểu ấy tôi không đoán ý bạn đâu. Phài mô tả, liệt kê tất cả các thao tác kể từ khi hiện Form: trước tiên tôi gõ cái này vào đây ..., sau đó lay lay cái kia, giật giật cái nọ, rồi tôi nhấn cái này để thực hiện code ... Lẽ ra phải có TriGia1 RỖNG nhưng nó không rỗng.
Còn kiểu tôi CHO TriGia1="", nhưng chả biết trước đó có những gì, rồi CHO khi nào, CHO trong bối cảnh nào, cách CHO, thì ngồi đợi người khác nhé.
 
Lần chỉnh sửa cuối:
Chào Thành viên Batman1.
Bạn trách như thế là đúng rồi nhưng vì tôi chưa update hoàn chỉnh nên không attach file được. Nhờ Bạn giúp tôi vấn đề này nhé. Yêu cầu là sau khi "Ghi số liệu" vào sheet thì phải xóa hết textbox để nhập mới.
Cám ơn Bạn.
 

File đính kèm

  • QLKD2022_VAT.xls
    2.1 MB · Đọc: 3
  • So lieu TriGia khong xoa duoc.jpg
    So lieu TriGia khong xoa duoc.jpg
    144.4 KB · Đọc: 9
  • Code xoa TriGia.jpg
    Code xoa TriGia.jpg
    166.2 KB · Đọc: 9
Trong cái Userform của bạn, nhìn theo hình thì thấy bạn thiết kế cố định có 10 dòng nhập, nếu phát sinh hơn 10 dòng thì nhập như thế nào bạn?
Tôi viết file này vì trước đây dùng hóa đơn giấy chỉ có 10 dòng thôi và cũng là hạn chế của tôi chưa biết làm thế nào để có thể nhập n dòng bất kỳ.
 
Chào Bạn Batman1 và các thành viên diễn đàn. (Dù đã quá tuổi & còn tí đam mê nhưng không học bài bản nên xin giúp đỡ cho trọn vẹn)
Trường hợp có nhiều sản phẩm nên phải chọn tìm kiếm từ listbox "LB" form "MaKhach" và sau khi click chọn thì giá trị tìm được phải gán vào textbox hiện hành "TenHH2" form F_Input.
Trân trọng.
 

File đính kèm

  • KHO-HANG.XLS
    2.3 MB · Đọc: 9
  • Yeu cau gan sanpham tim duoc vao textbox hien hanh (TenHH2).jpg
    Yeu cau gan sanpham tim duoc vao textbox hien hanh (TenHH2).jpg
    212.4 KB · Đọc: 15
  • Gan Sanpham2 tim duoc vao textbox TenHH2 cua form F_Input (textbox hien hanh).jpg
    Gan Sanpham2 tim duoc vao textbox TenHH2 cua form F_Input (textbox hien hanh).jpg
    159.9 KB · Đọc: 15
Chào Bạn Batman1 và các thành viên diễn đàn. (Dù đã quá tuổi & còn tí đam mê nhưng không học bài bản nên xin giúp đỡ cho trọn vẹn)
Trường hợp có nhiều sản phẩm nên phải chọn tìm kiếm từ listbox "LB" form "MaKhach" và sau khi click chọn thì giá trị tìm được phải gán vào textbox hiện hành "TenHH2" form F_Input.
Trân trọng.
Tôi bắt ̣đầu chuyến đi nghỉ 10 ngày rồi. Bạn nhờ người khác đi.
 
Tôi bắt ̣đầu chuyến đi nghỉ 10 ngày r
ồi. . . . .
Chúc bạn "Thượng lộ Bình an"!

Chào . . . . . các thành viên diễn đàn. (Dù đã quá tuổi & còn tí đam mê nhưng không học bài bản nên xin giúp đỡ cho trọn vẹn)
. . . .
Chắc bạn chưa tuổi hưu mà nhỉ; Vậy thì dịp khác hãy nên nói về tuổi tác,. . . . .
 

File đính kèm

  • Form.rar
    24.6 KB · Đọc: 7
Lần chỉnh sửa cuối:
Chúc bạn "Thượng lộ Bình an"!


Chắc bạn chưa tuổi hưu mà nhỉ; Vậy thì dịp khác hãy nên nói về tuổi tác,. . . . .
Cám ơn Bạn SA_DQ.
Hình như Form bạn gửi chỉ thể hiện trên cùng 1 form nhập liệu? Yêu cầu xử lý là sau khi tìm nhóm SP tương thích và click chọn từ listbox thì sẽ gán giá trị từ listbox "LB" form MaKhach vào textbox "TenHH" hiện hành của form F_Input
Trân trọng.
Bài đã được tự động gộp:

Chúc bạn "Thượng lộ Bình an"!


Chắc bạn chưa tuổi hưu mà nhỉ; Vậy thì dịp khác hãy nên nói về tuổi tác,. . . . .
Giá trị form của SA_DQ được add vào sheet, nhưng yêu cầu của tôi là gán vào form.
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom