Xin giúp đỡ code tự động hiện bảng cảnh báo nhập dữ liệu trùng với dữ liệu cho trước.

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

ThuyDuong2024

Thành viên mới
Tham gia
14/12/11
Bài viết
47
Được thích
4
Em có một số nội dung cần xử lý:
- khi nhập ngày tháng ở sheet 2 nếu ngày đó trùng với 1 trong các ngày nghỉ được chọn trước trong một vùng ở sheet 1 thì sẽ tự động hiện bảng cảnh báo trùng vào ngày nghỉ lễ để nhập lại.
- Khi 2 hay nhiều hơn các dòng ở cột G sheet này có giờ, ngày, tháng, năm trùng nhau thì cũng hiện bảng cảnh báo trùng ngày, giờ. để mình biết mà chọn ngày, giờ khác (có thể trùng ngày, chỉ cần khác giờ là được)

Nội dung cụ thể e ghi trong file mẫu (File e chỉ để dạng ví dụ để nhẹ và ko bị virut). Rất mong ace nào biết giúp e với ạ.
 

File đính kèm

  • Bang theo doi tinh hinh thuc hien.xlsb
    36.2 KB · Đọc: 23
Theo em bác không cần phức tạp hóa vấn đề cho khó, bác làm 1 cột phụ bên cạnh nếu vào Tết thì nhập lại! 1706262641329.png
 
Upvote 0
Tạo thêm cột và dùng hàm if, thậm chí cả F. Rules để cảnh báo bằng màu sắc thì mình cũng làm rồi, nhưng khi nhập với một danh sách dài, mà cột phụ lại ở cuối bảng, đã có lúc có nhiều bạn ko quen nên quên ko ktra dẫn đến sai sót. Và riêng cái vụ dùng F. Rules thì ghét cái lỡ copy cel, dòng là nó lại nhân thêm. Cái form cảnh báo hiện ra là dễ nhận biết nhất vì phải xem nó.
 
Upvote 0
Bài này giống 50% với bài đổi mã của mình. Tuy nhiên sự kiện trong một sheet mà 2 cột thì phải nghĩ nhiều đây. Tình hình là nâng cao quá. :wallbash: :wallbash: :wallbash:
 
Upvote 0
Tạo thêm cột và dùng hàm if, thậm chí cả F. Rules để cảnh báo bằng màu sắc thì mình cũng làm rồi, nhưng khi nhập với một danh sách dài, mà cột phụ lại ở cuối bảng, đã có lúc có nhiều bạn ko quen nên quên ko ktra dẫn đến sai sót. Và riêng cái vụ dùng F. Rules thì ghét cái lỡ copy cel, dòng là nó lại nhân thêm. Cái form cảnh báo hiện ra là dễ nhận biết nhất vì phải xem nó.
Bạn để highlight cả dòng hoặc từ cột cần cảnh báo đến hết (để màu chữ và màu nền giống nhau, nhập liệu xong mà ko đọc đc chữ là mọi người tự hiểu mà
 
Upvote 0
Vấn đề cảnh báo trùng dữ liệu bằng cách tô màu ô, màu chữ bằng công cụ Conditional thì có một nhược điểm lớn đó là mỗi lần copy dòng, cái này sẽ dùng rất nhiều trong quá trình nhập liệu, thì quả là thảm hoạ tăng số Rules lên. Còn nếu dùng bảng cảnh báo không cho nhập bằng Data validition thì chỉ khi chúng ta nhập trực tiếp 1 số nào đó bị trùng vào vùng được thiết lập. Còn nếu trong vùng đó mà là hàm, công thức được lấy từ cột khác đến thì nó ko có tác dụng.
 
Upvote 0
Không đâu bạn, cái vụ CF để tô màu nền hay chữ chắc ai dùng Excel cũng quá biết thì trước đây khi áp dụng mình cũng đã nhận thấy cái bất cập kia rồi, nên mới lập topic này nhờ viết code VBA đấy thôi. Nhưng mãi không tìm được code nên hôm nay lại "đào" lại hy vọng có ai nhìn thấy mà giúp!
 
Upvote 0
Hạn chế:
- Dữ liệu phải xóa hết đi, chừa lại cái nghỉ thôi (ảnh).
- Hy vọng là biết dán vào đâu.
- Cái vụ copy sheet thì thôi nhé, chịu khó copy paste value nhé.
Mã:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim tempO As Range
    Set tempO = Target
    Application.EnableEvents = False
    If Not Intersect(Target, Range("e4:e28")) Is Nothing And Target.Value <> "" Then
        If Application.CountIf(Worksheets("Du lieu").Range("C5:C31"), Target.Offset(, -1)) Then
            MsgBox "Trufng ngafy nghir leex, haxy chojn ngafy khasc!!!"
            tempO.Clear
            GoTo Thoat
        End If
        If Application.CountIf(Worksheets("Nhap lieu").Range("G3:G28"), Target.Offset(, 2)) > 1 Then
            MsgBox "Trufng thowfi gian xuaast xuwowrng, haxy chojn ngafy khasc!!!"
            tempO.Clear
        End If
    End If
Thoat:
    Application.EnableEvents = True
End Sub
1717497844817.png
 
Upvote 0
Em có một số nội dung cần xử lý:
- khi nhập ngày tháng ở sheet 2 nếu ngày đó trùng với 1 trong các ngày nghỉ được chọn trước trong một vùng ở sheet 1 thì sẽ tự động hiện bảng cảnh báo trùng vào ngày nghỉ lễ để nhập lại.
- Khi 2 hay nhiều hơn các dòng ở cột G sheet này có giờ, ngày, tháng, năm trùng nhau thì cũng hiện bảng cảnh báo trùng ngày, giờ. để mình biết mà chọn ngày, giờ khác (có thể trùng ngày, chỉ cần khác giờ là được)

Nội dung cụ thể e ghi trong file mẫu (File e chỉ để dạng ví dụ để nhẹ và ko bị virut). Rất mong ace nào biết giúp e với ạ.
Bạn xem đúng nhu cầu chưa nhé.
 

File đính kèm

  • Bang theo doi tinh hinh thuc hien.xlsb
    51.9 KB · Đọc: 10
Upvote 0
Em rất cảm ơn các bác đã giúp đỡ, code của bác cantl em chưa kịp test vì em vừa xem bài, còn bài của bác dangvandang thì đúng ý em rồi. Việc kết xuất ra file khác đã được thực hiện, nếu hiện form tạo đường dẫn đến thư mục tuỳ chọn nữa thì tuyệt, nhưng như này là được rồi, vì file xuất sẽ mặc định nằm cùng thư mục file đang làm việc.
Còn chỗ cảnh báo trùng ngày nghỉ lễ, nếu chúng ta nhập trực tiếp số vào các ô ở cột E thì code đúng. Còn giả sử các ngày ở 2 cột C,D được liên kết với nhau bằng công thức cộng, nghĩa là các ngày bắt đầu của mã SP dưới + ngày kết thúc của mã SP trên cho đến hết thì khi đó nếu ta thay đổi ngày đầu tiên ở C4, các ngày ở cột D khi đó trùng vào ngày nghỉ nhưng nó sẽ ko có cảnh báo.
Thêm nữa, nếu ngày bắt đầu ở C4 nếu được link từ một sheet khác, ví dụ sheet Data, khi đó ta thay đổi ngày ở sheet Data thì nó vẫn trùng ngày nghỉ nhưng ko có cảnh báo.
Đó là những vấn đề mà ngay khi lập topic để nhờ giúp đỡ em cũng chưa hình dung ra. Rất mong bác thông cảm nhé!
 
Upvote 0
Em rất cảm ơn các bác đã giúp đỡ, code của bác cantl em chưa kịp test vì em vừa xem bài, còn bài của bác dangvandang thì đúng ý em rồi. Việc kết xuất ra file khác đã được thực hiện, nếu hiện form tạo đường dẫn đến thư mục tuỳ chọn nữa thì tuyệt, nhưng như này là được rồi, vì file xuất sẽ mặc định nằm cùng thư mục file đang làm việc.
Còn chỗ cảnh báo trùng ngày nghỉ lễ, nếu chúng ta nhập trực tiếp số vào các ô ở cột E thì code đúng. Còn giả sử các ngày ở 2 cột C,D được liên kết với nhau bằng công thức cộng, nghĩa là các ngày bắt đầu của mã SP dưới + ngày kết thúc của mã SP trên cho đến hết thì khi đó nếu ta thay đổi ngày đầu tiên ở C4, các ngày ở cột D khi đó trùng vào ngày nghỉ nhưng nó sẽ ko có cảnh báo.
Thêm nữa, nếu ngày bắt đầu ở C4 nếu được link từ một sheet khác, ví dụ sheet Data, khi đó ta thay đổi ngày ở sheet Data thì nó vẫn trùng ngày nghỉ nhưng ko có cảnh báo.
Đó là những vấn đề mà ngay khi lập topic để nhờ giúp đỡ em cũng chưa hình dung ra. Rất mong bác thông cảm nhé!
Bạn xem đúng ý chưa nhé.
 

File đính kèm

  • Bang theo doi tinh hinh thuc hien_Rev01.xlsb
    60.8 KB · Đọc: 6
Upvote 0
À tiện thể e hỏi thêm chút, chỗ xuất file ấy. Nó "mang" luôn cả cái CommandButton sang file mới. kkk
Thêm một xíu nữa: Có thể chỉ xuất dữ liệu theo một số cột cụ thể, và giới hạn bởi dòng cuối cùng có dữ liệu không? VD chỉ cần lấy dữ liệu cột B4:B7 và G4:G7 đi ko? Và cột nào có dữ liệu được link từ sheet khác thì được copy pates value để mất nguồn luôn. VD cột B mã SP sau này sẽ được dò tìm từ sheet dữ liệu sang thì được làm mất link của hàm tìm kiếm đi.
 
Lần chỉnh sửa cuối:
Upvote 0
À tiện thể e hỏi thêm chút, chỗ xuất file ấy. Nó "mang" luôn cả cái CommandButton sang file mới. kkk
Thêm một xíu nữa: Có thể chỉ xuất dữ liệu theo một số cột cụ thể, và giới hạn bởi dòng cuối cùng có dữ liệu không? VD chỉ cần lấy dữ liệu cột B4:B7 và G4:G7 đi ko? Và cột nào có dữ liệu được link từ sheet khác thì được copy pates value để mất nguồn luôn. VD cột B mã SP sau này sẽ được dò tìm từ sheet dữ liệu sang thì được làm mất link của hàm tìm kiếm đi.
Trong file mình để xuất dữ liệu từ cột A đến cột H, bạn có thể thay đổi vùng xuất theo ghi chú trong code.
 

File đính kèm

  • Bang theo doi tinh hinh thuc hien_Rev02.xlsb
    55.9 KB · Đọc: 7
Upvote 0
Web KT
Back
Top Bottom