diemhuyenanh
Thành viên hoạt động



- Tham gia
- 6/9/09
- Bài viết
- 167
- Được thích
- 58
TẠI SHEET2:
- Ô B1 dùng để nhập ngày tháng năm chấm công
- viết code để điền thứ trong tháng vào các cells từ C2 đến AG2, điền các ngày trong tháng từ các cells từ C3 đến AG3
trường hợp này thì em không biết giải thuật thế nào lên muốn các anh chị diễn đàn viết code để từ đó em học hỏi them
mong các anh chị giúp đỡ chỉ bảo cho em tiến bộ hơn
cảm ơn bạn đã quan tâm:Chưa cần dùng đến VBA; Bạn xem cách mình làm trong file đính kèm
Nếu bạn đồng í, ta sẽ áp dụng VBA để chuyển công đã chấm ở Sheet2 sang Sheet1; Mình cho là điều này là cần thiết & đúng chổ khi xử dụng VBA trong trang tính của bạn!
Sub ChuyenCong()
Dim Sh As Worksheet, Rng As Range, sRng As Range
Dim Cll As Range, Cls As Range
Dim Col As Byte
Set Sh = ThisWorkbook.Worksheets("Sheet1")
Set Rng = Sh.Range(Sh.[B5], Sh.[B5].End(xlDown))
Rng.Offset(1, 2).Resize(, 31).ClearContents
For Each Cls In Range([B4], [B4].End(xlDown))
Set sRng = Rng.Find(Cls.Value, , xlFormulas, xlWhole)
If Not sRng Is Nothing Then
For Each Cll In Cells(Cls.Row, "D").Resize(, 31)
Col = Cll.Column
If Weekday(Cells(3, Col)) <> 1 And Weekday(Cells(3, Col)) <> 7 Then
With Sh.Cells(sRng.Row, Col)
If Cells(Cll.Row, Col).Value = "" Or Cells(Cll.Row, Col).Value = "LB" Then
.Value = "X"
Else
' .Value = Cells(Cll.Row, Col).Value '
End If
End With
Else
If Cells(Cll.Row, Col).Value = "LB" Then _
Sh.Cells(sRng.Row, Col) = "X"
End If
Next Cll
End If
Next Cls
End Sub
cảm ơn bác & bác xem lại cho em bên sheet1 tháng 4 có 30 ngày mà lại chấm công cho cả ngày 31 thì tiền đâu em đền đây bác ơi. tháng có bao nhiêu ngày thì chấm công cho bây nhieu ngày thôi chứ bác
Col = Cll.Column
If Month(Cells(3, Col).Value) <> Month(Cells(3, "D").Value) Then Exit For
- Trường hợp nếu ngày nghỉ mà có làm việc (làmthêm) thì tại sheet2 mình sẽ đánh dấu vào ngày làm thêm ví dụ đánh dấu"LT" thì sheet1 sẽ tự động chấm công cho người đó vào ngày làm thêmtương ứng <--- Bạn xem lại mục này hình như chưa hoạt động thì phải bạn ạ.[ThongBao]em them vô mà không được bác ơi. bác em lại hộ em với nhé[/ThongBao]
Range("A1:AH28").Select
Range("A1:AI28").Select
Ở bài #7 chủ đề tài có nói rằng :- Trường hợp nếu ngày nghỉ mà có làm việc (làmthêm) thì tại sheet2 mình sẽ đánh dấu vào ngày làm thêm ví dụ đánh dấu"LT" thì sheet1 sẽ tự động chấm công cho người đó vào ngày làm thêmtương ứng <--- Bạn xem lại mục này hình như chưa hoạt động thì phải bạn ạ.
Cái này mình không có máy in, bạn fải chờ hay nhờ người khác đi vậyVà cho mình hỏi thêm nếu mình muốn in luôn cả phần cột tổng phía sau thì mình sửa chỗ nào, mình đã sửa đoạnthànhPHP:Range("A1:AH28").Select
mà không được.PHP:Range("A1:AI28").Select
Công thức viết tổng đã được cài sẵn bỡi tác giả của bài đăng; Bạn hỏi bạn í xem sao(?)Thêm nữa khi mình insert thêm nhân viên thì dòng tổng phía dưới cũng bị clear mất công thức luôn.