Giúp code: lấy ngày cuối của một tháng, dựa vào tên Sheet!

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

Em nhờ Thầy cô & anh chị giúp em code sau:
Cách làm của em trước đây:
1/Em có tên các sheet T01, T02, T03….T11, T12. Các sheet này tương ứng với các tháng 01, 02, 03 … 11, 12
Tại cell A5 của các Sheet trên em sử dụng công thức
MID(CELL("filename";A5);FIND("]";CELL("filename";A5))+1;256)
Để lấy tên Sheet
Và sử dụng code dưới đây để lấy ngày cuối cùng của tháng tương ứng của các sheet T01, … T12 nói trên

Sub NgayCuoiThang()    With Range([B8], [B5000].End(xlUp))
        .Offset(.Rows.Count, 3)(3, 1).Formula = [COLOR=#ff0000][B]"=DATE(MA!A2,VALUE(RIGHT(A5,2))+1,0)"[/B][/COLOR]
        .Offset(.Rows.Count, 3)(3, 1).NumberFormat = """/(/gày ""dd"" tháng ""mm"" n" & ChrW(259) & "m ""yyyy"
        .Offset(.Rows.Count, 3)(3, 1).Resize(, 4).HorizontalAlignment = xlCenterAcrossSelection
    End With
End Sub

2/ Riêng T13 là sheet tổng hợp cả năm, nên sẽ lấy ngày cuối cùng của năm, và em sử dụng code

Sub NgayCuoiNam()With Range([B8], [B5000].End(xlUp))
    .Offset(.Rows.Count, 3)(3, 1).Formula = [B][COLOR=#ff0000]Sheets("Ma").[b3][/COLOR][/B]
    .Offset(.Rows.Count, 3)(3, 1).NumberFormat = """/(/gày ""dd"" tháng ""mm"" n" & ChrW(259) & "m ""yyyy"
    .Offset(.Rows.Count, 3)(3, 1).Resize(, 4).HorizontalAlignment = xlCenterAcrossSelection
End With
End Sub

————————–
Yêu cầu của em: Bây giờ em bỏ công thức tại cell A5 của tất cả các Sheet từ T01 -> T12
Em nhờ các Thầy cô & anh chị viết Một code Tổng hợp cho cả 2 trường hợp nói trên để tạo Ngày cuối tháng tương ứng của từng Sheet và Ngày cuối năm cho Sheet T13
———-
Lưu ý: Năm hiện hành tại cell A2 của Sheet MA
Em cảm ơn!

Thì vầy thôi:

Sub NgayCuoiThang()
  Dim lYear As Long, lMonth
  lYear = Sheets("MA").Range("A2").Value
  lMonth = Right(ActiveSheet.Name, 2)
  With Range("B5000").End(xlUp)
    With .Offset(3, 3)
      .Value = DateSerial(lYear, lMonth + 1, 0)
      .NumberFormat = """/(/gày ""dd"" tháng ""mm"" n" & ChrW(259) & "m ""yyyy"
      .Resize(, 4).HorizontalAlignment = xlCenterAcrossSelection
    End With
  End With
End Sub

và:

Sub NgayCuoiNam()
  Dim lYear As Long
  lYear = Sheets("MA").Range("A2").Value
  With Range("B5000").End(xlUp)
    With .Offset(3, 3)
      .Value = DateSerial(lYear, 12, 31)
      .NumberFormat = """/(/gày ""dd"" tháng ""mm"" n" & ChrW(259) & "m ""yyyy"
      .Resize(, 4).HorizontalAlignment = xlCenterAcrossSelection
    End With
  End With
End Sub

www.giaiphapexcel.com/diendan/threads/gi%C3%BAp-code-l%E1%BA%A5y-ng%C3%A0y-cu%E1%BB%91i-c%E1%BB%A7a-m%E1%BB%99t-th%C3%A1ng-d%E1%BB%B1a-v%C3%A0o-t%C3%AAn-sheet.75415/

Bây giờ em nhờ Thầy gom 2 code trên thành 1 code
Nếu Chạy code cho các Sheet từ T01 -> T12: thì Code lấy ngày cuối tháng
Còn nếu Chạy code cho Sheet T13 :thì Code lấy ngày cuối năm
Em cảm ơn!

Em gom lại như thế này

Sub TongHop()
    Dim lYear As Long, lMonth
    lYear = Sheets("MA").Range("A2").Value
    lMonth = Right(ActiveSheet.Name, 2)
    With Range([B8], [B5000].End(xlUp))
        With .Offset(.Rows.Count, 3)(3, 1)
            If Right(ActiveSheet.Name, 2) > 12 Then
                .Value = DateSerial(lYear, 12, 31)
            Else
                .Value = DateSerial(lYear, lMonth + 1, 0)
            End If
            .NumberFormat = """/(/gày ""dd"" tháng ""mm"" n" & ChrW(259) & "m ""yyyy"
            .Resize(, 4).HorizontalAlignment = xlCenterAcrossSelection
        End With
    End With
End Sub

Thấy chạy vẫn tốt, không biết có đúng cú fáp không?
Em cảm ơn!

If chi nhiều thế. Chỉ vầy thôi:

Sub NgayCuoiThang()
  Dim lYear As Long, lMonth As Long
  lYear = Sheets("MA").Range("A2").Value
  lMonth = 1 * Right(ActiveSheet.Name, 2)
  lMonth = IIf(lMonth > 12, 12, lMonth)
  With Range("B5000").End(xlUp).Offset(3, 3)
    .Value = DateSerial(lYear, lMonth + 1, 0)
    .NumberFormat = """/(/gày ""dd"" tháng ""mm"" n" & ChrW(259) & "m ""yyyy"
    .Resize(, 4).HorizontalAlignment = xlCenterAcrossSelection
  End With
End Sub
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

Bình luận

Quảng cáo

Cũ vẫn chất

Xem thêm