Networkdays функция не с VBA - PullRequest
0 голосов
/ 02 марта 2020

Я строю дату, и мне нужно рассчитать рабочие дни, исключая также праздничные дни. Я использовал функцию netwokingday в vba, но, похоже, не выбирает названный диапазон для банковских выходных. Вот фрагмент моего кода:

    For i = 2 To new_Endrow
    begin = Range("F" & i)
    finish = Range("G" & i)

    If finish <> "" Then

     Range("H" & i) = Application.WorksheetFunction.NetworkDays(begin, finish, UKholidays)

    End If


Next

enter image description here

Имейте в виду, что "begin" и "fini sh" являются короткими датами и праздничными днями в Великобритании. это диапазон имен, который выбирает только первый столбец отображаемой таблицы, исключая заголовок. Когда я использовал ту же функцию на листе, что и обычную функцию ячейки, а не код с VBA, она прекрасно работала, используя тот же синтаксис (= NETWORKDAYS (A1, B1, UKholidays), очевидно, A1 и B1 были "begin" и "fini sh «соответственно)

1 Ответ

0 голосов
/ 02 марта 2020

Вместо существующих я рекомендую следующее изменение.

Cells(i, "H").Value = Application.WorksheetFunction.NetworkDays(begin, finish, Range("UKholidays"))

Использование синтаксиса Range("H" + i) неудобно, если вычисляются номера строк или столбцов. Предпочтительный способ адресации отдельных ячеек, если Cells([Row], [Column]). VBA будет принимать столбец в строковом формате, например Cells(i, "H"), но, очевидно, его придется преобразовать в Cells(i, 8), поскольку Excel работает с числами, а не со строками.

Кроме того, я призываю вас обратиться к Value свойство, если вы имеете в виду свойство Value. Это значение по умолчанию, и Excel / VBA «поймет», если вы его опустите. Проблема в том, что Cells(i, 8), диапазон, и Cells(i, 8), его значение неотличимы от вас , и вы будете сбиты с толку, когда Excel не поймет значение, которое вы намеревались.

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