Các bác cho em xin code VBA nhập điểm thi 2 số mà nó tự thêm dấu phẩy vào giữa và nhảy dòng. (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Nên chăng ta làm cái Form với 20 nút lớn nhỏ khác nhau; Khi đó muốn nhập anh nào thì bấm vô nút tương ứng; Khỏi gõ bàn phím luôn!
 
Code đại khái như sau:
(Bạn nào đã viết qua ứng dụng cho bên giáo dục, các giáo viên nhập điểm thi sẽ có thủ tục để xử lý nhập liệu kiểu này.)

Mã:
Sub NhapDiem(tgtCell As Range)
   Select Case Len(tgtCell.Value)
       Case 1
              tgtCell.Value = tgtCell.Value
       Case 2
           If tgtCell.Value = 10 Then
              tgtCell.Value = tgtCell.Value
           Else
              tgtCell.Value = tgtCell.Value / 10
           End If
       Case 3
              tgtCell.Value = tgtCell.Value / 100
       Case Else
              MsgBox "So khong duoc lon hon 3 chu so"
   End Select
End Sub
Bài đã được tự động gộp:



Gõ 10 thì nhâp vô là 10 bác.
Bài này nếu nhập vào số nhỏ hơn 1 thì làm sao nhỉ bạn.Ví dụ được 0.5 Điểm.
 
Bài này nếu nhập vào số nhỏ hơn 1 thì làm sao nhỉ bạn.Ví dụ được 0.5 Điểm.

Code đại khái thôi mà.
Vậy để hỏi chủ thớt xem khi 0.5 điểm thì giáo viên cho thành 1 luôn không rồi tính tiếp.

Thớt mà nhập a, b, c thì tèo thật

Nhập a,b c thì phải bẫy lỗi nhập liệu trước khi xử lý số.
 
Với điểm nhỏ hơn 1 (0.4 điểm) thì sao?
Gõ nhầm a,b,c thì bồ tèo :p
Bài này nếu nhập vào số nhỏ hơn 1 thì làm sao nhỉ bạn.Ví dụ được 0.5 Điểm.

Đúng ra thì có thể nhập 04, 05...

Nhưng tôi đã nêu lên ở bài trước, cái kiểu "lười biếng gõ thêm một vài phím" này chỉ là mời mọc lỗi gõ sai đơn vị thôi.

Nguyên tắc nhập liệu (*) là phải chuẩn cách gõ. Muốn gõ "phần mười" thì tất cả đều phải phần mười (chia cho 10).
0,1 gõ 01.
1 gõ 10
9,5 gõ 95
10 gõ 100

(*) tôi làm việc với giao diện gõ số mấy chục năm rồi. Giao diện của chúng tôi thiết kế nhiều loại gõ theo lô (batch), một phút gõ vài chục số, mỗi số 2-14 chữ số (trung bình 7 chữ số).
Thực sự mỗi lần đọc mấy câu "gõ cho nhanh..." tôi thầm bĩu môi: giới trẻ quý vị chưa biết "gõ nhanh" có nghĩa là gì đâu.
 
Đọc lại yêu cầu ở bài 1 thì còn có nội dung "tự xuống dòng". (nhập điểm thi 2 số nó tự thêm dấu phẩy vào giữa và tự xuống dòng)
Nghĩa là gõ không cần enter. Khi đang gõ
- Gõ được 1 ký số thì chưa làm gì
- Gõ được 2 ký số thì "chèn dấu phẩy vào giữa", không cần gõ nữa và cũng không cần enter, phải tự xuống dòng.
- Không có cơ hội gõ 3 ký số vì mới 2 số đã nhảy ra khỏi ô.
Do đó những code nào viết dựa trên sự kiện Worksheet Change là không đạt yêu cầu, vì sự kiện sheet change chỉ xảy ra sau khi nhấn enter hoặc nhấn tab, hoặc nhấn các phím mũi tên, hoặc click chuột vào ô khác.
Giả sử vẫn lập trình được cho yêu cầu trên, thì cũng không nhanh hơn được bao nhiêu vì:
- Các số điểm tròn vẫn phải gõ 2 con 10, 20, 30, ... Nếu chỉ gõ 1 con vẫn phải nhấn enter
- Số nhỏ hơn 1 cũng phải gõ 2 con 03, 05, 08, so với không lập trình cũng không bớt được lần nhấn nào.
- 10 điểm không có cửa gõ 100, gõ 10 bị coi là 1.0.
Tóm lại yêu cầu này: một là không khả thi, 2 là hiệu quả không cao, 3 là hậu quả do sai sót còn lớn hơn hiệu quả mang lại.
 
Đọc lại yêu cầu ở bài 1 thì còn có nội dung "tự xuống dòng". (nhập điểm thi 2 số nó tự thêm dấu phẩy vào giữa và tự xuống dòng)
Nghĩa là gõ không cần enter. Khi đang gõ
- Gõ được 1 ký số thì chưa làm gì
- Gõ được 2 ký số thì "chèn dấu phẩy vào giữa", không cần gõ nữa và cũng không cần enter, phải tự xuống dòng.
- Không có cơ hội gõ 3 ký số vì mới 2 số đã nhảy ra khỏi ô.
Do đó những code nào viết dựa trên sự kiện Worksheet Change là không đạt yêu cầu, vì sự kiện sheet change chỉ xảy ra sau khi nhấn enter hoặc nhấn tab, hoặc nhấn các phím mũi tên, hoặc click chuột vào ô khác.
Giả sử vẫn lập trình được cho yêu cầu trên, thì cũng không nhanh hơn được bao nhiêu vì:
- Các số điểm tròn vẫn phải gõ 2 con 10, 20, 30, ... Nếu chỉ gõ 1 con vẫn phải nhấn enter
- Số nhỏ hơn 1 cũng phải gõ 2 con 03, 05, 08, so với không lập trình cũng không bớt được lần nhấn nào.
- 10 điểm không có cửa gõ 100, gõ 10 bị coi là 1.0.
Tóm lại yêu cầu này: một là không khả thi, 2 là hiệu quả không cao, 3 là hậu quả do sai sót còn lớn hơn hiệu quả mang lại.
Đại loại là tác giả có muốn làm nhanh ( chưa nói tới lười nha) nhưng không tính được trường hợp xẩy ra để bẫy lỗi trong code và chưa tính đến sai sót.Và hậu quả thì cũng chưa biết luôn
 
Đại loại là tác giả có muốn làm nhanh ( chưa nói tới lười nha) nhưng không tính được trường hợp xẩy ra để bẫy lỗi trong code và chưa tính đến sai sót.Và hậu quả thì cũng chưa biết luôn
.
Thực tế thì lúc lên GPE người ta rất chủ quan và đã có thành kiến. Muốn làm như ý mình là như ý mình, không bao giờ nghe lời người khác phân tích lợi hại.
Code thì có người code giùm. Gõ dữ liệu sai thì lỗi do người gõ. Người thiết kế đâu có mất mát gì.

Khi tôi bàn, phân tích lợi hại là tôi bàn cho các bạn khác,. Trước khi nhắm mắt cóp code/công thức về dùng thì cũng nên biết rõ rằng giải pháp của thớt chỉ áp dụng được cho thớt. Làm theo giống vậy thì nát bét có ngày.
 
Web KT

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

Back
Top Bottom