Вместо существующих я рекомендую следующее изменение.
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 не поймет значение, которое вы намеревались.