I have got a sheet with holidays of 5 countries in 5 columns (each row is a date of holiday for given country) and I want to use it for Application.WorksheetFunction.WorkDay function
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
but I have no idea how to choose entire 3rd column (in many programing languages it would be holi(3, :)) for WorkDay function.
Also is my lastHolidayRow the best way to select all data from that sheet? Some countries has less holidays than others, so am I selecting the last last row correctly?
for example if my date is 01.01.2010 then WorkDay func should return 02.01.2010 (it's DD-MM-YYYY)
CodePudding user response:
Try this:
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
Notice the part that says holidays.Range("A2:A" & lastHolidayRow). This is referenced to PLN only. If you want to switch to other country change both A to whatever column you want. For EUR it would be holidays.Range("C2:C" & lastHolidayRow) and so on.
CodePudding user response:
Try Range("C:C") if I understood your question correctly
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

