Tự động hiển thị dấu "." ngăn cách các số khi nhập số vào ô cell

Liên hệ QC

duong22000

Thành viên thường trực
Tham gia
8/5/13
Bài viết
322
Được thích
23
Xin các bác chỉ giúp code vba khi nhập số vào ô ví dụ:
Bây giờ em chỉ cần nhập 8 hiện giá trị là 8; 525 --> 5.25; 85 --> 8.5; ....
Em xin cảm ơn mọi người trên GPE!
 
Lần chỉnh sửa cuối:
Cảm ơn bạn đã quan tâm ! Trong một bảng tính của excel, cứ nhập số có 2 hoặc 3 số thì tự động có dấu chấm sau số đầu tiên như nêu trên.
Mình hỏi một chút, không lẽ bảng tính đó chỉ để nhập số mà không làm gì khác, trong khi cả bảng tính có hơn 17 tỷ ô.
 
0.25, 0.5, 0.75 nhập thế nào mới là vấn đề.
 
Xin các bác chỉ giúp code vba khi nhập số vào ô ví dụ:
Bây giờ em chỉ cần nhập 8 hiện giá trị là 8; 525 --> 5.25; 85 --> 8.5; ....
Em xin cảm ơn mọi người trên GPE!
Tại sao không đưa ra vài ví dụ cụ thể, cho một số trường hợp mà chỉ đưa ra một ví dụ quá mập mờ (thì chẳng có ai có thể hiểu ý bạn).
 
Có dấu chấm sao không chịu nhập, dùng code chi cho rắc rối?
 
Câu hỏi quan trọng hơn: gõ xong có enter không?
Nếu không muốn gõ enter thì không có cách nào
Nếu có gõ enter, thì gõ 025, 05 sẽ vẫn bị hiểu là 25 và 5, bị trở thành 2.5 và 5.0, cũng sẽ không có cách
 
cái mới gõ 025 đã biến thành 25
Định dạng Text là được rồi anh.
Còn bài #6.

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim s As String, f As String
    Application.EnableEvents = False
    If Target.Address = "$F$2" Then
        s = Target.Value
        f = VBA.Left$(s, 1)
        Mid(s, 1, 1) = "."
        Target.Value = f & s
    End If
    Application.EnableEvents = True
End Sub
 
Em cảm ơn mọi người trên GPE ạ, em muốn dùng nhập mỗi số cho nhanh khi phải nhập điểm có số thập phân ạ. Nếu cứ nhập 85 rồi chuyển sang ô tiếp thì ô vừa nhập 85 sẽ chuyển thành 8.5; tương tự 875 thì thành 8.75; trường hợp 10 thì vẫn là 10; 025 thì thành 0.25 và 05 thì thành 0.5 ạ
 
Em cảm ơn mọi người trên GPE ạ, em muốn dùng nhập mỗi số cho nhanh khi phải nhập điểm có số thập phân ạ. Nếu cứ nhập 85 rồi chuyển sang ô tiếp thì ô vừa nhập 85 sẽ chuyển thành 8.5; tương tự 875 thì thành 8.75; trường hợp 10 thì vẫn là 10; 025 thì thành 0.25 và 05 thì thành 0.5 ạ
Chừ mới hiểu được dụng ý của thớt. Vậy thì chỉ khu trú trong vòng 10 điểm học sinh nên không khó.
 
Em cảm ơn mọi người trên GPE ạ, em muốn dùng nhập mỗi số cho nhanh khi phải nhập điểm có số thập phân ạ. Nếu cứ nhập 85 rồi chuyển sang ô tiếp thì ô vừa nhập 85 sẽ chuyển thành 8.5; tương tự 875 thì thành 8.75; trường hợp 10 thì vẫn là 10; 025 thì thành 0.25 và 05 thì thành 0.5 ạ
Định dạng Text là được rồi anh.
Định dạng text thì sau khi xử lý sẽ là text, rồi làm sao tính trung bình, tính tổng?

Nếu không cần tính toán tiếp thì định dạng text trước khi nhập:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents =False
    If Val(Target) = 10 Or Len(Target) = 1 Then Exit Sub
    If Not Intersect(Target, Range("C2:C100") Is Nothing Then
         Target.Value = Val(Target.Value) / IIf(Len(Target) = 3, 100, 10)
    End If
Application.EnableEvents = True
End Sub

_________
Sửa code thêm Application.EnableEvents theo góp ý của bi phèn :p:p
 
Lần chỉnh sửa cuối:
Định dạng text thì sau khi xử lý sẽ là text, rồi làm sao tính trung bình, tính tổng?

Nếu không cần tính toán tiếp thì định dạng text trước khi nhập:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Val(Target) = 10 Then Exit Sub
    If Not Intersect(Target, Range("C2:C100") Is Nothing Then
         Target.Value = Val(Target.Value) / IIf(Len(Target) = 3, 100, 10)
    End If
End Sub
Khi động tới chính Target phải kiểm soát cái Event nữa anh, nếu không dính lặp ấy.
Muốn tính toán bình thường thì trong coe mình có thể định text sau đó chuyển lại.
 
Muốn tính toán bình thường thì trong coe mình có thể định text sau đó chuyển lại.
Đối với các số nhỏ hơn 1 như 025, 05, 075; các bước muốn code chạy sẽ là:
- Định dạng text
- Nhập text
- Code xử lý thêm dấu chấm thập phân
- Để nguyên định dạng text.
Nếu dùng Code định dạng số cho ô đó thì khi người dùng nhập sai và muốn nhập lại thì sao?

Nếu befaint chỉ dùng code định dạng text sau khi nhập thì số 0 đã biến mất chỉ còn 25, 5, 75.

Khi động tới chính Target phải kiểm soát cái Event nữa anh, nếu không dính lặp ấy.
Chủ yếu là cái thuật toán đơn giản.
 
Đối với bài này và phương pháp gõ có số 0 phía trước thì có thể dùng user form. Có 2 tuỳ chọn nhập và sửa, nếu sửa thì phải chọn ô cần sửa

1611070152312.png

Code:
PHP:
Private Sub TxtDiem_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If TxtDiem = "" Or IsNumeric(TxtDiem) = False Then
    MsgBox "Ky qua", , "Ptm0412"
    Exit Sub
End If
Dim Diem As Double
    If Val(TxtDiem) = 10 Or Len(TxtDiem) = 1 Then
        Diem = Val(TxtDiem)
    Else
        Diem = Val(TxtDiem) / IIf(Len(TxtDiem) = 3, 100, 10)
    End If
If Opt1 Then
    Cells(1000, 3).End(xlUp).Offset(1).Value = Diem
Else
    Range(RefCell).Value = Diem
End If
    TxtDiem = ""
    Cancel = True
End Sub
 

File đính kèm

  • FormNhapDiem.xlsm
    26.3 KB · Đọc: 3
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom