Sub CanhBao_GPE()
Dim i As Long, Arr(), Endr As Long, NgayXoa As Date, HienTai As Date
With Sheet1
If .AutoFilterMode Then .AutoFilterMode = False
Endr = .Range("D65500").End(xlUp).Row
If Endr > 7 Then
HienTai = DateSerial(Year(Now()), Month(Now()), Day(Now()))
Arr = .Range("A8:R" & Endr)
For i = 1 To Endr - 7
If IsDate(Arr(i, 9)) Then
NgayXoa = CDate(Arr(i, 9))
If NgayXoa > HienTai Then
.Rows(i + 7).Interior.Color = 5296274
ElseIf HienTai - NgayXoa <= 10 Then
.Rows(i + 7).Interior.Color = 255
End If
End If
Next i
.Range("A7:R" & Endr).AutoFilter
Else
Msgbox "KHONG CO DU LIEU DE LAM !", , GPE
End If
End With
End Sub
Dạ, máy cái màu e toàn record macro, nhưng cái office 2010 của e sao không tìm thấy màu xanh dương ( e toàn thấy Theme color ) ! hic !Cái này Record Macro là có bạn nhỉ? 16777062
Nếu bạn muốn mở lên nó chạy thì bạn bấm Alt + F11 => chọn This workbook => chọn sự kiện cho nó là Workbook_Open() , rồi bạn chèn đoạn code kia vào là theo yêu cầu của bạn rồi !lọc mới được hả bạn ?
mình cần là khi mở file ra xem tự nó chạy luôn !
chứ mình không cần thao tác lọc mới tìm được !
Option Explicit
Private Sub Worksheet_Activate()
Dim Rws As Long, Rng As Range, Cls As Range
Rws = [d7].CurrentRegion.Rows.Count
Set Rng = [i8].Resize(Rws).SpecialCells(xlCellTypeConstants, 21)
For Each Cls In Rng
If Date - Cls.Value < 10 And Date > Cls.Value Then
Cls.Resize(, 4).Interior.ColorIndex = 3
ElseIf Date > Cls.Value Then
Cls.Resize(, 4).Interior.ColorIndex = 5
Else
If Cls.Interior.ColorIndex > 2 Then _
Cls.Resize(, 4).Interior.ColorIndex = 2
End If
Next Cls
End Sub
Thì thử với macro sự kiện:
PHP:Option Explicit Private Sub Worksheet_Activate() Dim Rws As Long, Rng As Range, Cls As Range Rws = [d7].CurrentRegion.Rows.Count Set Rng = [i8].Resize(Rws).SpecialCells(xlCellTypeConstants, 21) For Each Cls In Rng If Date - Cls.Value < 10 And Date > Cls.Value Then Cls.Resize(, 4).Interior.ColorIndex = 3 ElseIf Date > Cls.Value Then Cls.Resize(, 4).Interior.ColorIndex = 5 Else If Cls.Interior.ColorIndex > 2 Then _ Cls.Resize(, 4).Interior.ColorIndex = 2 End If Next Cls End Sub
bạn coi lại yêu cầu bài đầu tiên thử xem người đọc vào hiểu sao mà bạn nói chưa hiểu ? Thế tại sao bạn không miêu tả yêu cầu ngay từ đầu luônhình như mấy bạn chưa hiểu ?
Chỗ này mình hiểu như thế này đúng không ? Nếu quá hạn mà Cột N ( tức cột đã xóa kỷ luật ) có dấu "X" thì nó không tô màu, ngược lại nếu cột M( chưa xóa kỷ luật ) nếu có dấu "X" thì nó sẽ tô màu xanh lá. Nếu đúng thế thì mình làm tiếp !
Nếu quá hạn vẫn chưa xóa thì có nghĩa là nó dựa M6 (Chưa xóa kỷ luật) và ngày hiện tại nó sẽ chuyển sang mà xanh, N6 (Đã xóa kỷ luật) thì sẽ không có màu !
[thongbao]cái này sao mình đưa vào không có gì vậy ![/thongbao]
Thấy trong file của bạn có macro nên chưa hướng dẫn kỹ cách xài:
Chép macro vô module sự kiện của trang tính
Sang trang tính khác & sau đó trở về trang tính vừa có macro thì được
Thử đi bạn, sẽ thích ngay mà!
(*) chạy không đúng.
(1) đã xóa nó vẫn tô màu. HSSV bị xóa tên và bảo lưu vẫn tô luôn ^_^
(2)sắp đến hạn xóa 10 ngày thì chuyển sang màu đỏ. qua ngày đó màu đỏ luôn ^_^
Thứ nhứt, bạn ăn nói cộc lốc là không nên trên diễn đàn này; Thêm nữa, bạn chắc đang làm ngành giáo dục; Đã vậy lời viết cần chỉnh chu hơn!
...
Vài lời cùng bạn & tạm biệt!