Canh bao khi data bi trung trong list danh sach ?

Liên hệ QC

himawarivn

Thành viên mới
Tham gia
8/1/07
Bài viết
4
Được thích
0
Chao cac anh chi !
Khong biet lam the nao de excel se canh bao khi minh go mot du lieu da co trong list ? Vi du : em go tat ca ten cua nhan vien can lanh luong trong thang vao cot A va da go ten Nguyen Thi A roi. Lam the nao de khi em go ten Nguyen Thi A mot lan nua thi excel se bao hieu ve viec du lieu da duoc go roi ? Em hoi the vi doi khi hay go trung du lieu khien mot ten nhan vien nhung xuat hien trong bang luong den 2 lan.
Cac anh chi giup em voi nhe

------------------

Chú ý: Bài viết của bạn phải có dấu nhé!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Chào bạn,

Mình nghĩ bạn có thể dùng Menu / Format / Conditional Formatting...
Hoặc Menu / Data / Validation...
Bạn có thể tải file ví dụ để tham khảo.

Thân !
 
Lần chỉnh sửa cuối:
Khi dùng data/validation, nếu copy - paste sẽ không có phản ứng xảy ra.
 
chibi đã viết:
Khi dùng data/validation, nếu copy - paste sẽ không có phản ứng xảy ra.
Đúng như Chibi nói. Vậy nếu muốn hiệu quả ngay cả copy-past, mình nghĩ chắc phải dùng đến VBA thôi (Worksheet_Change), chứ tiện ích có sẵn trong Excel chắc không có quá hay mình chưa biết (?)

Thân !
 
Thử với cái này xem sao:

Mã:
[B]Private Sub Worksheet_Change(ByVal Target As Range)[/B]
 Dim Rng As Range, rCell As Range
 If Target.Value = "" Then Exit Sub 
 Set Rng = Range("B2:b" & Range("B65432").End(xlUp).Row)
 For Each rCell In Rng
    If rCell.Value = Target.Value Then
        MsgBox "Da Nhap", , rCell.Address:                Exit For
    End If
 Next rCell
 Target.Value = ""
 Set Rng = Nothing
[B]End Sub [/B]
 
Chỉnh sửa lần cuối bởi điều hành viên:
Chào bạn

HYen17 đã viết:
Mã:
[B]Private Sub Worksheet_Change(ByVal Target As Range)[/B]
 Dim Rng As Range, rCell As Range
 If Target.Value = "" Then Exit Sub 
 Set Rng = Range("B2:b" & Range("B65432").End(xlUp).Row)
 For Each rCell In Rng
    If rCell.Value = Target.Value Then
        MsgBox "Da Nhap", , rCell.Address:                Exit For
    End If
 Next rCell
 Target.Value = ""
 Set Rng = Nothing
[B]End Sub [/B]
Code trên mình thấy không ổn. Nếu bạn chọn nhiều cell hoặc toàn bảng tính rồi bấm Delete thì sẽ gặp lỗi ngay.
Theo mình thì mình rất hạn chế dùng Worksheet_Change vì nó sẽ là làm bảng tính chậm đi rất nhiều và dễ gây ra lỗi.

Thân !
 
Lần chỉnh sửa cuối:
tedaynui đã viết:
Đúng như Chibi nói. Vậy nếu muốn hiệu quả ngay cả copy-past, mình nghĩ chắc phải dùng đến VBA thôi (Worksheet_Change), chứ tiện ích có sẵn trong Excel chắc không có quá hay mình chưa biết (?)

Thân !
Ta nên dùng sự kiện Worksheet_SelectionChange vì sự kiện này sẽ ngăn cản việc copy hoặc cut

Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       Application.CutCopyMode = False
End Sub


Thân!
 
Theo tôi, chúng ta nên dùng cả 2 cách: vừa dùng conditional formating và VBA luôn. Để bảo toàn công
việc của mình, VBA tiện hơn nhưng không may bị mất code mà kg rành về VBA thì làm sao đây.
Điều này thật sự hiệu quả nếu bạn thực hiện với số lượng lớn. Ví dụ điển hình là Tính Lương nhân viên ở một cty sản xuất có hàng trăm công nhân và Tiền Lương thì hạn chế làm sai.
 
Web KT
Back
Top Bottom