2010-01-19 55 views
5

bất kể ngày nào tôi gọi chức năng.cách gọn gàng để lấy ngày Thứ Sáu cuối cùng

Tôi biết tôi có thể viết một trường hợp chọn ngày trong tuần (bây giờ) tuyên bố, đã chỉ tự hỏi nếu có một cách neater để đi?

+2

Thú vị câu hỏi. Tôi nghĩ ban đầu nó đọc: "Cách gọn gàng để có được ngày Thứ Sáu cuối cùng" - như hẹn hò với một cô gái. – Phil

Trả lời

7

Điều này có giúp bạn bắt đầu không? Tôi vừa thử nghiệm nhanh và có vẻ ổn.

Private Sub LastFriday() 

    Dim iWeekday As Integer, LastFridayDate As Date 

    iWeekday = Weekday(Now(), vbFriday) 

    LastFridayDate = Format(Now - (iWeekday - 1), "dd-mmm-yy") 

End Sub 
+1

+1 Làm thế nào về chỉ Định dạng (Ngày- (ngày trong tuần (ngày, vbFriday) -1), "dd-mmm-yy") – THEn

+0

@THEn - Vị trí tốt - sẽ hoạt động và làm cho mã ngắn gọn hơn. Tôi đoán đó chỉ là vấn đề về phong cách. –

0
DatePart('dddd', now) 

hoặc

DatePart('dddd', #1/1/2010#) 

... với một ngày rõ ràng.

4

DateAdd ("d", -1 - Weekday (Now), Now)

0

Chức năng này sẽ tìm thấy vào thứ Sáu hàng tuần của tháng trước, bạn có thể thay đổi nó cho phù hợp với các ngày khác như ngày hôm nay, nhưng bạn có thể thay đổi

Dim todaysDate Như ngày = Date.Today Dim oldDay As Integer Dim thisWeek Như ngày

Dim firstWeek As Date 
    Dim secondWeek As Date 
    Dim thirdWeek As Date 
    Dim fourthWeek As Date 


    ''finds the Friday of the end of the current week 
    ''No mattter what day you are working 
    Dim daycount As Integer 

    oldDay = Weekday(todaysDate) 
    thisWeek = todaysDate 

    If oldDay < 6 Then 
     daycount = 6 - oldDay 
     thisWeek = thisWeek.AddDays(+daycount) 
    ElseIf oldDay > 6 Then 
     daycount = oldDay - 6 
     thisWeek = thisWeek.AddDays(-daycount) 
    End If 


    firstWeek = thisWeek 
    secondWeek = thisWeek 
    thirdWeek = thisWeek 
    fourthWeek = thisWeek 

    fourthWeek = firstWeek.AddDays(-28) 
    thirdWeek = thirdWeek.AddDays(-21) 
    secondWeek = secondWeek.AddDays(-14) 
    firstWeek = firstWeek.AddDays(-7) 
Các vấn đề liên quan