Nhập dữ liệu sai với qui định thì báo lỗi (1 người xem)

Liên hệ QC

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

minhhangg

Thành viên hoạt động
Tham gia
4/5/11
Bài viết
197
Được thích
61
Xin chào các thành viên GPE, em có 1 vấn đề khó xữ. Rất mong được giúp đỡ. Câu hỏi trong file. Em cảm ơn nhiều ạ.
 

File đính kèm

Xin chào các thành viên GPE, em có 1 vấn đề khó xữ. Rất mong được giúp đỡ. Câu hỏi trong file. Em cảm ơn nhiều ạ.
Em xem file coi đúng chưa. Em mô tả chưa được rõ ràng lắm. Mình thắc mắc TB và Tb khác nhau thế nào nhỉ
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [G7:AC56]) Is Nothing Then
   If Target.Column <> 18 Then
      Application.EnableEvents = False
      Set tim = [BP:BP].Find(Target)
      If tim Is Nothing Then
         Target.Clear: Target.Select
         MsgBox "Nhap sai du lieu"
      Else
         Target = UCase(Target)
         If Target = "D" Then Target = ChrW(272)
         If Target = "CD" Or Target = "C" Then Target = "C" & ChrW(272)
         If Target = "KEM" Then Target = "KÉM"
         If Target = "T" Then Target = "Tb"
      End If
      Application.EnableEvents = True
   End If
End If
End Sub
 

File đính kèm

Upvote 0
Theo mình nghĩ bạn dùng Data Validasion là được thui
 
Upvote 0
Em xem file coi đúng chưa. Em mô tả chưa được rõ ràng lắm. Mình thắc mắc TB và Tb khác nhau thế nào nhỉ
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [G7:AC56]) Is Nothing Then
   If Target.Column <> 18 Then
      Application.EnableEvents = False
      Set tim = [BP:BP].Find(Target)
      If tim Is Nothing Then
         Target.Clear: Target.Select
         MsgBox "Nhap sai du lieu"
      Else
         Target = UCase(Target)
         If Target = "D" Then Target = ChrW(272)
         If Target = "CD" Or Target = "C" Then Target = "C" & ChrW(272)
         If Target = "KEM" Then Target = "KÉM"
         If Target = "T" Then Target = "Tb"
      End If
      Application.EnableEvents = True
   End If
End If
End Sub

File của anh gần chính xác. Chỉ còn 1 chổ nữa thôi đó là: Khi em nhập số nguyên thì file của anh nó báo lỗi như vậy là chưa được.
Ý em là nhập số nguyên (ví dụ như em nhập 56 thì kết quả cho là 5.6), số thập phân và kể cả xếp loại đều được. Ngoài qui định thì báo lỗi. Cảm ơn anh nhiều.

Theo mình nghĩ bạn dùng Data Validasion là được thui
Nếu như dùng Data; Validation như ở bài 2 nhìn nó xấu, có vẻ gồm rà. Ngược lại nếu dùng Min; Max thì giới hạn của nó không nhập được xếp loại. Cảm ơn bạn có lời khuyên.
 
Lần chỉnh sửa cuối:
Upvote 0
File của anh gần chính xác. Chỉ còn 1 chổ nữa thôi đó là: Khi em nhập số nguyên thì file của anh nó báo lỗi như vậy là chưa được.
Ý em là nhập số nguyên (ví dụ như em nhập 56 thì kết quả cho là 5.6), số thập phân và kể cả xếp loại đều được. Ngoài qui định thì báo lỗi. Cảm ơn anh nhiều.


Nếu như dùng Data; Validation như ở bài 2 nhìn nó xấu, có vẻ gồm rà. Ngược lại nếu dùng Min; Max thì giới hạn của nó không nhập được xếp loại. Cảm ơn bạn có lời khuyên.

Mình biết sợ cách bạn mô tả rồi đấy. Thật ra đâu cần cột phụ làm gì, code tự xoay sở được rồi

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [G7:AC56]) Is Nothing Then
   If Target.Column <> 18 Then
      Application.EnableEvents = False
      If Not IsNumeric(Target) Then
         Target = UCase(Target)
         If Target = "D" Then Target = ChrW(272)
         If Target = "CD" Or Target = "C" Then Target = "C" & ChrW(272)
         If Target = "K" Then Target = "KÉM"
         If Target = "KEM" Then Target = "KÉM"
         If Target = "T" Then Target = "Tb"
      ElseIf IsNumeric(Target) Then
         If Target > 10 Then
            Target = Replace(Target, ",", "")
            Target = Val(Left(Target, 1) & "." & Right(Target, 1))
         End If
      End If
      Application.EnableEvents = True
   End If
End If
End Sub

PS: Nếu nhập dữ liệu ngoài vùng của cột BP vẫn cho phép thì báo lỗi gì nữa?
 
Lần chỉnh sửa cuối:
Upvote 0
Mình biết sợ cách bạn mô tả rồi đấy. Thật ra đâu cần cột phụ làm gì, code tự xoay sở được rồi
Hi, hi, em nghỉ chắc anh làm được nhưng gì em mô tả không chuẩn nên mắc công anh quá. Cảm ơn anh nhiều lắm anh à. Mong anh giúp em.
 
Lần chỉnh sửa cuối:
Upvote 0
Hi, hi, em nghỉ chắc anh làm được nhưng gì em mô tả không chuẩn nên mắc công anh quá. Cảm ơn anh nhiều lắm anh à.
Thôi để em mô tả thêm 1 lần nữa xem sao, nếu không được thì mình kết thúc chủ đề này anh nhé.
Em làm 1 bảng điểm dành cho tất cả GVBM đều sử dụng được. Nếu Gv nhập điểm thì cho kết quả là điểm, nếu Gv nhập xếp loại thì cho kết quả là xếp loại.
Nhập điểm: Em làm cho GVBM nhập điểm nhanh thay vì Gv nhập điểm là 5.6 thì Gv chỉ cần nhập là 56 là được hoặc ngược lại Gv nhập 5.6 cũng được luôn.
Nhập xếp loại: Cũng tương tự như trên thay gì Gv nhập loại CĐ thì chỉ cần nhập c thôi thì cho ra là CĐ. Các loại khác cũng tương tự.
Giờ thì không biết làm sao, lỡ như giáo viên nhập ngoài những qui định của mình thì bảng điểm không báo lỗi được. Ví dụ như Gv muốn nhập loại G nhưng lại nhập chữ H thì bảng tính điểm của mình sai đi. Ý em muôn là nhập những gì sai với qui định như trong file bài 1 là báo lỗi. Hi vọng anh hiểu được. Em đã nói hết ý của em rồi, Hì. Cảm ơn anh Hải nhé. Mong anh giúp em.

Thử thế này xem sao nhé, đang lười nên viết lung tung quá
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [G7:AC56]) Is Nothing Then
   If Target.Column <> 18 Then
      Application.EnableEvents = False
      If Not IsNumeric(Target) Then
         Target = UCase(Target)
         If Target <> "G" And Target <> "K" And Target <> "TB" And Target <> "T" And _
         Target <> "Y" And Target <> "KE" And Target <> "KEM" And Target <> "KÉM" And Target <> ChrW(272) And _
         Target <> "C" & ChrW(272) And Target <> "C" And Target <> "CD" And Target <> "D" Then
            Target.Clear: Target.Select
            MsgBox "Nhap sai du lieu"
            Application.EnableEvents = True
            Exit Sub
         End If
         If Target = "D" Then Target = ChrW(272)
         If Target = "CD" Or Target = "C" Then Target = "C" & ChrW(272)
         If Target = "K" Then Target = "KHÁ"
         If Target = "KEM" Then Target = "KÉM"
         If Target = "KE" Then Target = "KÉM"
         If Target = "T" Then Target = "Tb"
      ElseIf IsNumeric(Target) Then
         If Target > 10 Then
            Target = Replace(Target, ",", "")
            Target = Val(Left(Target, 1) & "." & Right(Target, 1))
         End If
      End If
      Application.EnableEvents = True
   End If
End If
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom