选择 Range 对象的范围

Selecting range of Range object

我有一个 sheet 在 5 列中包含 5 个国家/地区的假期(每行是给定国家/地区的假期日期),我想将其用于 Application.WorksheetFunction.WorkDay 函数

Sub Func()
   Dim holidays As Worksheet
   Set holidays = Sheets("Holidays")
   Dim lastHolidayRow As Long
   
   lastHolidayRow = holidays.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
   holi = holidays.Range("A2:E" & lastHolidayRow).Value

   previous_working_day = Application.WorksheetFunction.WorkDay("19.02.2022", -1, holi(3, :)) 

End Sub

但我不知道如何为 WorkDay 函数选择整个第 3 列(在许多编程语言中它将是 holi(3, :))。

我的 lastHolidayRow 也是 select 来自 sheet 的所有数据的最佳方式吗?有些国家的假期比其他国家少,所以我 select 最后一行是否正确?

例如,如果我的日期是 01.01.2010,那么 WorkDay func 应该 return 02.01.2010(它是 DD-MM-YYYY)

如果我正确理解你的问题,请尝试Range("C:C")

Sub Func()
   Dim holidays As Worksheet
   Dim holi as Range
   Set holidays = Sheets("Holidays")
   Dim lastHolidayRow As Long
   
   lastHolidayRow = holidays.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
   Set holi = holidays.Range("A2:E" & lastHolidayRow)

   next_working_day = Application.WorksheetFunction.WorkDay("19.02.2022", -1, holi.Range("C:C")) 

End Sub

试试这个:

Sub Func()
Dim holidays As Worksheet
Set holidays = Sheets("Holidays")
Dim holi As Range
Dim previous_working_day As Date

Set holi = holidays.Range("A1").CurrentRegion
lastHolidayRow = holidays.Rows.Count

previous_working_day = Application.WorksheetFunction.WorkDay("19.02.2022", -1, holidays.Range("A2:A" & lastHolidayRow))

Set holi = Nothing

End Sub

注意 holidays.Range("A2:A" & lastHolidayRow) 的部分。这仅参考 PLN。如果您想切换到其他国家/地区,请将 A 都更改为您想要的任何列。对于欧元,它将是 holidays.Range("C2:C" & lastHolidayRow) 等等。