Tô màu nền cho tên sheet có điều kiện.

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Chào anh chị!

Nhờ anh chị giúp em vấn đề này vớiạ. Em muốn tô màu nền cho tên sheet theo điều kiện nếu ở cột E có xuất hiện ô màu đỏ (màu đỏ 255 em tô bàng Conditional Formatting) thì tên sheet cũng được bôi màu đỏ theo . và ngược lại nếu ở cột E không xuất hiện ô màu đỏ thì để trắng hoặc tô màu xanh. Dưới đây là file đính kèm của em.
Xin phép bổ sung: Nếu như không tô màu được thì có cách nào liệt kê các sheet mà cột E có ô màu đỏ không ạ.
Em cảm ơn!

Bạn thử code này xem.

Sub tomau()
    Dim lr As Long, i As Long, dk As Boolean, k As Long
    For i = 3 To Sheets.Count
        dk = False
        With Sheets(i)
             lr = .Range("E" & Rows.Count).End(xlUp).Row
             If lr > 4 Then
                For k = 4 To lr
                    If .Cells(k, 5).Interior.ColorIndex = 40 Then
                       dk = True
                       Exit For
                    End If
                Next k
             End If
          If dk = False Then
             .Tab.ColorIndex = 40
          Else
             .Tab.ColorIndex = 3
          End If
       End With
   Next i
End Sub

Cảmơn anh đã giúp
Code tô chưa đúng anh ạ,
một số sheet cột E không có ô đỏ vẫn bị tô, có sheet cột E có ô đỏ lại không tô ạ.

Thêm 1 tham khảo:

Sub SheetColor()
Dim Sh As Worksheet, Rng As Range, Cls As Range

Application.ScreenUpdating = False
For Each Sh In ThisWorkbook.Worksheets
ColorSheet Sh.Name, 2
Set Rng = Sh.Range(Sh., Sh..End(xlUp))
For Each Cls In Rng
If Cls.Interior.Color = 255 Then
ColorSheet Sh.Name, 255: Exit For
End If
Next Cls
Next Sh
Application.ScreenUpdating = True
End Sub

Sub ColorSheet(Sh, MyColor As Integer)
    With Sheets(Sh).Tab
        .Color = MyColor:                    .TintAndShade = 0
    End With
End Sub

Bác Sa ơi code này nó khi tap sheet có màu đỏ mà trong cột E không có màu đỏ nó không chuyển màu vẫn thành màu đỏ à.:D.

Màu đỏ ở cột E là em dùng Conditional Formatting bôi. em xem thì nó là 255 không biết có đúng không nữa, code anh viết em thấy gần được rồi, a giúp em chỉnh lại được không ạ! em cảm ơn

Bạn xem nhé.

Sub tomau()
    Dim lr As Long, i As Long, dk As Boolean, k As Long
    For i = 3 To Sheets.Count
        dk = False
        With Sheets(i)
             lr = .Range("E" & Rows.Count).End(xlUp).Row
             If lr > 4 Then
                For k = 4 To lr
                    If Left(.Cells(k, 1), 4) = "3972" Then
                       If (.Cells(k, 6).Value - .Cells(k, 5).Value) > 0.01 Or (.Cells(k, 5).Value - .Cells(k, 6).Value) > 0.01 Then
                          dk = True
                          Exit For
                       End If
                    End If
                Next k
             End If
          If dk = False Then
             .Tab.ColorIndex = 40
          Else
             .Tab.ColorIndex = 3
          End If
       End With
   Next i
End Sub

Vẫn bị lỗi anhơi ,Sheet 15S cần cần tô nhung code tô anhà
EM chỉnh được rồi cảm ơn anh nhiều

Hình như code lấy color trong Conditional Formatting là:

If .Cells(k, 5).DisplayFormat.Interior.ColorIndex = 40

Mình dùng Excel 2007 nên chưa test cho chủ thớt được. Đúng là dùng Excel 2010 trở lên có thêm property DisplayFormat

I don't have an answer that works with Excel 2007 or lower but from Excel 2010 onwards you can use the following (changing the Range to suit):
Range("A1").DisplayFormat.Interior.ColorIndex

www.giaiphapexcel.com/diendan/threads/t%C3%B4-m%C3%A0u-n%E1%BB%81n-cho-t%C3%AAn-sheet-c%C3%B3-%C4%91i%E1%BB%81u-ki%E1%BB%87n.143546/

Khóa học Power PI – Ứng dung trong Nhân sự
Khóa học SprinGO phù hợp

Khóa học Power PI – Ứng dung trong Nhân sự

TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...

Xem khóa học
★★★★★ 5 ★ 1 👤 0 ▥ 0
Quảng cáo

Bạn nên đọc

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm