Search code examples
datecalendarvb6

VB6 Alternate 7 images every calendar week continuously


I am (still) programming in VB6, but I think this problem is not program language related.

I need to show one Picture out of 7 Pictures (named 1.jpg to 7.jpg) every calendar week, beginning with Calendar week 3, which shows picture nr.1

Example: (year and calendar week together as 2022/03)

202203=1.jpg

202204=2.jpg

202205=3.jpg

202206=4.jpg

202207=5.jpg

202208=6.jpg

202209=7.jpg

202210=1.jpg

202211=2.jpg

etc.

How can I do this?? Also, Years can have 52 or 53 weeks, but this has to continue like above...

Appreciate any help, thank you in advance.


Solution

  • Here is some code that gives the results you desire. It should be fairly self-explanatory:

    Option Explicit
    
    Private Sub Test()
       Dim dt As Date
       Dim i As Integer
       
       dt = DateSerial(2022, 1, 17)  'start at 3rd calendar week
       
       For i = 1 To 100
          Debug.Print Format(dt, "mm/dd/yyyy") & vbTab & Year(dt) & _
                      Format(ISOWeekNumber(dt), "00") & vbTab & GetPicture(dt)
          dt = DateAdd("d", 1, dt)
       Next
    End Sub
    
    Private Function GetPicture(ByVal dt As Date) As String
       Dim dp As Integer
    
       dp = ISOWeekNumber(dt) Mod 7 - 2
       If dp <= 0 Then dp = dp + 7
       GetPicture = dp & ".jpg"
    End Function
    
    Private Function ISOWeekNumber(ByVal dt As Date) As Integer
       ISOWeekNumber = DatePart("ww", dt, vbMonday, vbFirstFourDays)
    End Function
    

    This produces the following results:

    enter image description here

    enter image description here