Khi đã đưa ra thông báo rồi mà số liệu chưa được sửa thì 5phút lại hiện thông báo 1 lần
 
 
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim StrC  As String
 
 "Ban Nhap Sai Du Lieu" & Chr(10) & " Yeu Cau Kiem Tra Du Lieu Nhap."
 If Not Intersect(Target, Columns(3)) Is Nothing And Target.Offset(, -1) <> "" Then
   With Target
      If .Value <> .Offset(, -1).Value Then
         .Offset(, -1).Resize(, 2).Interior.ColorIndex = 3
         MsgBox StrC, , "GPE.COM"
      Else
         .Offset(, -1).Resize(, 2).Interior.ColorIndex = 0
      End If
   End With
 ElseIf Not Intersect(Target, Columns(2)) Is Nothing And Target.Offset(, 1) <> "" Then
   With Target
      If .Value <> .Offset(, 1).Value Then
         .Resize(, 2).Interior.ColorIndex = 5
         MsgBox StrC, , "GPE.COM"
      Else
         .Resize(, 2).Interior.ColorIndex = 0
      End If
   End With
 End If
End Sub
	Sao lại có dòng này không không vậy bác.PHP:Private Sub Worksheet_Change(ByVal Target As Range) Dim StrC As String "Ban Nhap Sai Du Lieu" & Chr(10) & " Yeu Cau Kiem Tra Du Lieu Nhap." If Not Intersect(Target, Columns(3)) Is Nothing And Target.Offset(, -1) <> "" Then With Target If .Value <> .Offset(, -1).Value Then .Offset(, -1).Resize(, 2).Interior.ColorIndex = 3 MsgBox StrC, , "GPE.COM" Else .Offset(, -1).Resize(, 2).Interior.ColorIndex = 0 End If End With ElseIf Not Intersect(Target, Columns(2)) Is Nothing And Target.Offset(, 1) <> "" Then With Target If .Value <> .Offset(, 1).Value Then .Resize(, 2).Interior.ColorIndex = 5 MsgBox StrC, , "GPE.COM" Else .Resize(, 2).Interior.ColorIndex = 0 End If End With End If End Sub
"Ban Nhap Sai Du Lieu" & Chr(10) & " Yeu Cau Kiem Tra Du Lieu Nhap."
	

Nhờ các Anh/chị trong viết giúp code cảnh báo khi nhập sai dữ liệu. Mình cũng đã thử bằng Data/validation nhưng không được. Cám ơn các Anh/chị!
Private Sub Worksheet_Change(ByVal target As Range)
    Call SS(target, [B2:B65536], 1, 2)
    Call SS(target, [C2:C65536], -1, 1)
End Sub
Sub SS(ByVal target As Range, Rng As Range, i As Integer, j As Integer)
    Dim Cll As Range
    On Error Resume Next
    If target.Rows.Count = 1 And Not Intersect(target, Rng) Is Nothing Then
        Set Cll = Intersect(target, Rng)
        If Cll <> "" And Cll.Offset(, i) <> "" Then
            If Cll <> Cll.Offset(, i) Then
                MsgBox "Nhap sai du lieu." & vbCrLf & "Kiem tra lai du lieu nhap."
                target.ClearContents
                target.Select
            Else: Cll.Offset(, j) = 0
            End If
        Else: Cll.Offset(, j) = ""
        End If
    End If
End Sub