Преобразовать год и номер недели в дату - PullRequest
0 голосов
/ 18 апреля 2020

Я использую элементы формы для создания указателя даты. Вы можете выбрать год, месяц и день. Или вы можете выбрать год и неделю. Я борюсь с битом недели.

Вы выбираете начальный год и начальную неделю, а затем год окончания и конечную неделю.

Допустим, вы выбрали 4 в качестве начальной недели и 7 как конец недели. Затем я хочу, чтобы в качестве даты начала была неделя понедельника 4, а в качестве даты окончания воскресенья 7 недели.

Как получить эти даты в формате ГГГГ-ММ-ДД? Не знаю с чего начать!

Теперь у меня есть четыре выпадающих меню. Начальный год, начало недели, конец года и конец недели. Кто-нибудь может указать мне правильное направление?

1 Ответ

1 голос
/ 18 апреля 2020

Существует множество способов решить эту проблему. Я начал с вопроса: «Как бы я получил дату с указанием дня и месяца?», А затем я работал в обратном направлении, учитывая номер недели, как получить дату. Ответ довольно прост и включает в себя двойное значение For l oop и использование Application.WorksheetFunction.WeekNum в VBA. Установка начала недели на понедельник также вернет понедельник данной недели, поэтому никаких дополнительных усилий для этого не требуется.

Sub Convert_Dates()

    'user inputs
    Dim lYear As Long: lYear = 2020
    Dim lWeekNum As Long: lWeekNum = 4


    Dim lMonth As Long, lDay As Long


    For lMonth = 1 To 12
        For lDay = 1 To 31
            If Application.WorksheetFunction.WeekNum(DateSerial(lYear, lMonth, lDay), vbMonday) = lWeekNum Then
                Debug.Print Format(DateSerial(lYear, lMonth, lDay), "YYYY-MM-DD")
                Exit Sub
            End If
        Next lDay
    Next lMonth

End Sub

И вывод:

enter image description here

Я уверен, что теперь вы можете изменить это для удовлетворения ваших потребностей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...