Em chào mọi người ạ, e cần so sánh ngày nghỉ ở sheet "ThongSo" với sheet BangChamCong, nếu trùng với số ngày ở hàng thứ 8 thì toàn bộ cột trùng của sheet BangChamCong sẽ bôi màu xanh. Em đã lấy được giá trị ở 2 sheet ở module 2 và module 3 nhưng em chưa biết so sánh thế nào. Mong anh chị giúp đỡ ạ. Em cảm ơn ạ.
(*) Tên trang tính nên là 'BCC' thay vì 'BangChamCong'
(*) Bạn không nên thụt đầu dòng các câu lệnh vô tội vạ như vầy:
PHP:
Sub LayGiaTriBCC()
Dim Target2 As Range 'Dg 1 '
Sheets("BangChamCong").Select 'Dg 2 '
Set Target2 = Range("C8", Range("C8:AF8" & Columns.Count).End(xlToRight))
For Each r In Target2 'Dg 4 '
MsgBox r.Offset(0, 1) 'Dg 5 '
Next
End Sub
Cái ni chỉ thích hợp cho những vị đã 'Hàn lâm' về code mà thôi; khuyên bạn khoan hãy bắt chước!
Đi vô fần chính iêu cầu so sánh của bạn:
Bạn đang cần so sánh số liệu ngày; Vây nên nhập ở ô [D8] của 'BCC' hàm này:
=Date(year(ThongSo!ThangSX), Month(ThongSo!ThangSX),, 1)
& định dạng để nó thể hiện kiểu 'DD'
Ô bên fải liền kế ta áp công thức =D8+1
Khi í, các ô đều là trị kiểu mm/dd/yyyy nên so gì mà chả được;
Ngoài ra còn cái lợi nữa là nhờ CF ta xác đinh ngày nào là 'Thứ bảy' hay Chúa nhật luôn cũng xong tấp lự!
(*) Tên trang tính nên là 'BCC' thay vì 'BangChamCong'
(*) Bạn không nên thụt đầu dòng các câu lệnh vô tội vạ như vầy:
PHP:
Sub LayGiaTriBCC()
Dim Target2 As Range 'Dg 1 '
Sheets("BangChamCong").Select 'Dg 2 '
Set Target2 = Range("C8", Range("C8:AF8" & Columns.Count).End(xlToRight))
For Each r In Target2 'Dg 4 '
MsgBox r.Offset(0, 1) 'Dg 5 '
Next
End Sub
Cái ni chỉ thích hợp cho những vị đã 'Hàn lâm' về code mà thôi; khuyên bạn khoan hãy bắt chước!
Đi vô fần chính iêu cầu so sánh của bạn:
Bạn đang cần so sánh số liệu ngày; Vây nên nhập ở ô [D8] của 'BCC' hàm này:
=Date(year(ThongSo!ThangSX), Month(ThongSo!ThangSX),, 1)
& định dạng để nó thể hiện kiểu 'DD'
Ô bên fải liền kế ta áp công thức =D8+1
Khi í, các ô đều là trị kiểu mm/dd/yyyy nên so gì mà chả được;
Ngoài ra còn cái lợi nữa là nhờ CF ta xác đinh ngày nào là 'Thứ bảy' hay Chúa nhật luôn cũng xong tấp lự!
Sub KiemTra()
Dim r As Long
Dim a As Integer
Dim b As Integer
r = 4
Sheets("ThongSo").Select
lRow = Range("B19").End(xlDown).row
For r = 4 To 35
For Each cell In Range("B19:B" & lRow)
a = Mid(cell.Value, 1, 2)
b = Sheets("BangChamCong").Cells(8, r).Value
If a = b Then
Sheets("BangChamCong").Cells(9, r).Interior.ColorIndex = 3
End If
Next
Next r
End Sub
Sub KiemTraNgayNghi()
Dim ViTriCot As Long
Dim lastRow As Long
Dim i As Long
Dim a As Integer 'Gia tri ngay nghi sheet ThongSo
Dim b As Integer ''Gia tri ngay nghi sheet BangChamCong
lastRow = Worksheets("BangChamCong").Cells(Rows.Count, "B").End(xlUp).row
Sheets("ThongSo").Select
lRow = Range("B19").End(xlDown).row
For Each cell In Range("B19:B" & lRow)
For i = 9 To lastRow
For ViTriCot = 4 To 34
'Lay ngay nghi sheet ThongSo
a = Mid(cell.Value, 1, 2)
'Lay ngay nghi sheet BangChamCong
b = Sheets("BangChamCong").Cells(8, ViTriCot).Value
If a = b Then
Sheets("BangChamCong").Cells(i, ViTriCot).Interior.ColorIndex = 4
Else
Sheets("BangChamCong").Cells(i, ViTriCot) = "x"
End If
Next ViTriCot
Next i
Next
End Sub
Em có viết thêm đoạn mã để tự động điền "x" vào cột không phải ngày nghỉ, nhưng lúc chạy xong những cột ngày nghỉ vẫn tự động điền "x" vào ạ. Các anh (chị) giúp em với ạ.
Em có viết thêm đoạn mã để tự động điền "x" vào cột không phải ngày nghỉ, nhưng lúc chạy xong những cột ngày nghỉ vẫn tự động điền "x" vào ạ. Các anh (chị) giúp em với ạ.
Em cảm ơn anh, em làm được rồi ạ, anh ơi cho em hỏi, làm thế nào để bỏ được edit link khi mới mở file lên bằng vba ạ. Hiện tại em mở file bằng dialog chọn file rồi copy luôn ạ.
On Error Resume Next
lOpen = Application.Dialogs(xlDialogOpen).Show
If lOpen = False Then
MsgBox "Huy Chon!"
Exit Sub
End If
Set FileBangQD = ActiveWorkbook
With FileBangQD
.Sheets("CongNghi").Copy ThisWorkbook.Sheets("BangChamCong")
.Sheets("TangCuong").Copy ThisWorkbook.Sheets("CongNghi")
.Sheets("BangLuong").Copy ThisWorkbook.Sheets("TangCuong")
.Sheets("ThongSo").Copy ThisWorkbook.Sheets("BangLuong")
.Close False
End With