Просто еще одно изменение, как указано выше, просто без цикла:
Private Function GetFridayDate(StartingDate As Date, DayToGet As DayOfWeek, iDays As Integer) As Date
Return StartingDate.AddDays(iDays + (DayToGet - StartingDate.DayOfWeek))
End Function
Пример использования функции
Dim dtStartDate As Date
dtStartDate = GetFridayDate(Now, DayOfWeek.Friday, -7) ' Last Week Friday
dtStartDate = GetFridayDate(Now, DayOfWeek.Friday, 0) ' This Week Friday
dtStartDate = GetFridayDate(Now, DayOfWeek.Friday, 7) ' Next Week Friday
dtStartDate = GetFridayDate(Now, DayOfWeek.Friday, 14) ' Week after Next Friday