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