Xin nhờ tìm ra định dạng dữ liệu ngày/tháng/năm bị lỗi

Liên hệ QC

Bùi Thúy Thúy

Thành viên thường trực
Tham gia
2/7/18
Bài viết
289
Được thích
38
Vùng chứa dữ liệu từ cột A đến cột AQ, nhờ các thầy, cô giúp em
cho em xin đoạn code để khi code hoạt động thì
tìm ra định dạng ngày bị lỗi ( định dạng lỗi là ngày 00/01/1900)
Khi tìm ra ô nào đó có định dạng bị lỗi trên thì tô màu nền đen ô đó và chữ màu nền trắng và bôi đậm và gạch ngang (như hình dưới)
(có thể dùng định dạng có điều kiện nhưng bài toán em ứng dụng nếu làm vậy rất lâu)
Xin nhờ sự giúp đỡ của thầy cô!dip.png
 

File đính kèm

  • ok.xlsx
    74.7 KB · Đọc: 8
Lần chỉnh sửa cuối:
Vùng chứa dữ liệu từ cột A đến cột AQ, nhờ các thầy, cô giúp em
cho em xin đoạn code để khi code hoạt động thì
tìm ra định dạng ngày bị lỗi ( định dạng lỗi là ngày 00/01/1900)
Khi tìm ra ô nào đó có định dạng bị lỗi trên thì tô màu nền đen ô đó và chữ màu nền trắng và bôi đậm và gạch ngang (như hình dưới)
(có thể dùng định dạng có điều kiện nhưng bài toán em ứng dụng nếu làm vậy rất lâu)
Xin nhờ sự giúp đỡ của thầy cô!View attachment 221573
Tô màu nền, font, font đậm, gạch ngang ... làm cho code duyệt trên từng ô rất chậm, cân nhắc việc này nhé.
Tham khảo code:
Mã:
Sub CheckDate()
Dim Rng As Range, Cel As Range, Lrw As Long
With Sheets("Danh muc NT CVXD")
    Lrw = .Range("E65535").End(xlUp).Row: If Lrw < 10 Then Exit Sub
    Set Rng = Union(.Range("R10:R" & Lrw), .Range("U10:U" & Lrw), .Range("X10:Y" & Lrw))
    For Each Cel In Rng
        If Cel <> "" And Cel.Value < 366 Then
            With Cel
                .Interior.ColorIndex = 1
                .Font.ColorIndex = 2
                .Font.Bold = True
                .Font.Strikethrough = True
            End With
        End If
    Next
End With
End Sub
Nếu muốn nhanh hơn chút thì bỏ tô đậm và gạch ngang đi.
 
00/01/1900 chính là định dạng ngày tháng, nếu là số thì nó là số 0, Bạn vào Formatcondition tạo một Quy tắc mới,
"Chỉ định dạng các ô có giá trị" - "Format Only CellsThat Contain", sau đó chọn Equal to ("Bằng") 0, vào Format chọn những màu, kiểu bạn muốn.
 
Tô màu nền, font, font đậm, gạch ngang ... làm cho code duyệt trên từng ô rất chậm, cân nhắc việc này nhé.
Tham khảo code:
Mã:
Sub CheckDate()
Dim Rng As Range, Cel As Range, Lrw As Long
With Sheets("Danh muc NT CVXD")
    Lrw = .Range("E65535").End(xlUp).Row: If Lrw < 10 Then Exit Sub
    Set Rng = Union(.Range("R10:R" & Lrw), .Range("U10:U" & Lrw), .Range("X10:Y" & Lrw))
    For Each Cel In Rng
        If Cel <> "" And Cel.Value < 366 Then
            With Cel
                .Interior.ColorIndex = 1
                .Font.ColorIndex = 2
                .Font.Bold = True
                .Font.Strikethrough = True
            End With
        End If
    Next
End With
End Sub
Nếu muốn nhanh hơn chút thì bỏ tô đậm và gạch ngang đi.
Dạ! cám ơn anh, anh ơi bỏ tô đậm và gạch ngang đi thì bỏ phần nào trong code ạ!
Bài đã được tự động gộp:

00/01/1900 chính là định dạng ngày tháng, nếu là số thì nó là số 0, Bạn vào Formatcondition tạo một Quy tắc mới,
"Chỉ định dạng các ô có giá trị" - "Format Only CellsThat Contain", sau đó chọn Equal to ("Bằng") 0, vào Format chọn những màu, kiểu bạn muốn.
Cám ơn anh đã hướng dẫn.
 
Thanks anh!
Bài đã được tự động gộp:

Tô màu nền, font, font đậm, gạch ngang ... làm cho code duyệt trên từng ô rất chậm, cân nhắc việc này nhé.
Tham khảo code:
Mã:
Sub CheckDate()
Dim Rng As Range, Cel As Range, Lrw As Long
With Sheets("Danh muc NT CVXD")
    Lrw = .Range("E65535").End(xlUp).Row: If Lrw < 10 Then Exit Sub
    Set Rng = Union(.Range("R10:R" & Lrw), .Range("U10:U" & Lrw), .Range("X10:Y" & Lrw))
    For Each Cel In Rng
        If Cel <> "" And Cel.Value < 366 Then
            With Cel
                .Interior.ColorIndex = 1
                .Font.ColorIndex = 2
                .Font.Bold = True
                .Font.Strikethrough = True
            End With
        End If
    Next
End With
End Sub
Nếu muốn nhanh hơn chút thì bỏ tô đậm và gạch ngang đi.
Em chạy thử code thấy không có tác động, liệu em chạy có bị lỗi thao tác nào không anh?
Anh xem giúp em ạ!
 

File đính kèm

  • 00.png
    00.png
    10.6 KB · Đọc: 5
  • filethu.xlsm
    81.2 KB · Đọc: 3
Lần chỉnh sửa cuối:
File cũ sót cột J, chạy code trong file đính kèm lại thử.
Mã:
Sub CheckDate()
Dim Rng As Range, Cel As Range, Lrw As Long
With Sheets("Danh muc NT CVXD")
    Lrw = .Range("E65535").End(xlUp).Row: If Lrw < 10 Then Exit Sub
    Set Rng = Union(.Range("J10:J" & Lrw), .Range("R10:R" & Lrw), _
        .Range("U10:U" & Lrw), .Range("X10:Y" & Lrw))
    For Each Cel In Rng
        If Cel <> "" And Cel.Value < 366 Then
            With Cel
                .Interior.ColorIndex = 1
                .Font.ColorIndex = 2
                '.Font.Bold = True
                '.Font.Strikethrough = True
            End With
        End If
    Next
End With
End Sub
 

File đính kèm

  • filethu.xlsm
    82.9 KB · Đọc: 3
File cũ sót cột J, chạy code trong file đính kèm lại thử.
Mã:
Sub CheckDate()
Dim Rng As Range, Cel As Range, Lrw As Long
With Sheets("Danh muc NT CVXD")
    Lrw = .Range("E65535").End(xlUp).Row: If Lrw < 10 Then Exit Sub
    Set Rng = Union(.Range("J10:J" & Lrw), .Range("R10:R" & Lrw), _
        .Range("U10:U" & Lrw), .Range("X10:Y" & Lrw))
    For Each Cel In Rng
        If Cel <> "" And Cel.Value < 366 Then
            With Cel
                .Interior.ColorIndex = 1
                .Font.ColorIndex = 2
                '.Font.Bold = True
                '.Font.Strikethrough = True
            End With
        End If
    Next
End With
End Sub
Dạ! em điền dữ liệu lỗi và thử lại trên 02 cột và chạy code vẫn chưa thấy bôi đen!
anh xem giúp em ạ!
01.png
 

File đính kèm

  • hik.xlsm
    80.7 KB · Đọc: 2
Dạ! em điền dữ liệu lỗi và thử lại trên 02 cột và chạy code vẫn chưa thấy bôi đen!
anh xem giúp em ạ!
View attachment 221589
Bạn sửa đoạn này:
Mã:
Set Rng = Union(.Range("J10:J" & Lrw), .Range("R10:R" & Lrw), _
        .Range("U10:U" & Lrw), .Range("X10:Y" & Lrw))
Nếu cột nào cần duyệt để kiểm tra thì thêm vào, ví dụ cột M: .Range("M10:M" & Lrw)
 
Bạn sửa đoạn này:
Mã:
Set Rng = Union(.Range("J10:J" & Lrw), .Range("R10:R" & Lrw), _
        .Range("U10:U" & Lrw), .Range("X10:Y" & Lrw))
Nếu cột nào cần duyệt để kiểm tra thì thêm vào, ví dụ cột M: .Range("M10:M" & Lrw)
Vâng, em làm được rồi ạ! cảm ơn anh rất nhiều!
 
Web KT
Back
Top Bottom