Добавление даты с использованием исключения выходных (пятница) в VBA

#excel #vba

#excel #vba

Вопрос:

У меня есть код, который отображается в ячейке «H5» без учета пятниц, но ссылается на «H4». И мне нужен «H4» также, исключая пятницы.

 Sub DateAddition()

Range("H4").Value = DateAdd("d", 1, CDate(Range("H4").Value))

Range("H5").Value = WorksheetFunction.WorkDay_Intl(Range("H4").Value, 1, 16, 0)

End Sub
  

Я пробовал использовать подобное, к сожалению, не работает.

 Range("H4").Value = DateAdd("d", 1, CDate(WorksheetFunction.WorkDay_Intl(Range("H4").Value, 1, 16, 0))
  

Я знаю, что если в эту строку внесено изменение, я смогу это внести. Но не знаю код

 Range("H4").Value = DateAdd("d", 1, CDate(Range("H4").Value))
  

Мне нужно, чтобы ячейка «H4» была выведена как дата, которая должна исключать пятницы

Ответ №1:

Просто используйте то же, что и для H5. Функция Worksheet.Метод WorkDay_Intl уже добавляет один день (задается вторым параметром, который является 1 ), поэтому вам не нужно использовать DateAdd .

 Option Explicit

Sub DateAddition()
    Range("H4").Value = WorksheetFunction.WorkDay_Intl(Range("H4").Value, 1, 16, 0)
    Range("H5").Value = WorksheetFunction.WorkDay_Intl(Range("H4").Value, 1, 16, 0)
End Sub
  

Комментарии:

1. Как насчет вычитания даты

2. @AfzalAshraf Вам действительно следует прочитать документацию, если я уже дал вам прямую ссылку: «Дни — количество рабочих дней до или после start_date. Положительное значение дает будущую дату; отрицательное значение дает прошлую дату; значение 0 (ноль) дает start_date. Смещение дня усекается до целого числа.»

3. Извините, что я это не проверил. Но теперь я понял. Вы очень добры и услужливы!