gpt4 book ai didi

excel - VBA - 如果前一天是银行假日,则打开前一个工作日的文件

转载 作者:行者123 更新时间:2023-12-02 22:29:34 24 4
gpt4 key购买 nike

我正在努力解决这个问题。基本上,我目前拥有的是打开前一个工作日文件的代码。

x = Weekday(Date, vbSunday)
Select Case x
Case 1
x = 2
Case 2
x = 3
Case Else
x = 1

End Select

Workbooks.Open Filename:= _
"filepath" & Format(Date - x, "yymmdd") & " - filename.xlsx"

显然,上述内容没有考虑银行/公共(public)假期。我如何将其构建到我的代码中,例如:

2018 年 3 月 29 日星期四 - 工作日

2018 年 3 月 30 日星期五 - 耶稣受难日(银行假日)

2018 年 2 月 4 日星期一 - 复活节星期一(银行假日)

2018 年 3 月 4 日星期二 - 工作日

当我周二进来并运行我的宏时,我希望它能够获取最后一个工作日的文件并使用该文件(2003 年 29 月星期四)。使用我当前的代码,不会被拾取,它将寻找星期一文件(显然不存在)。

我希望这是有道理的!

谢谢,杰森

最佳答案

您可以使用

获取上一个工作日

因此,通过...获取前最后一个工作日

Dim LastPreviousWorkday As Date
LastPreviousWorkday = Application.WorksheetFunction.WorkDay(Date(), -1)

例如。格式化输出

Format$(LastPreviousWorkday, "yymmdd")

您可以告诉 WorkDay 函数哪些日期(除了周末)应被视为假期,例如通过提供数组或范围作为第三个参数。

Dim BankHolidays As Variant
BankHolidays = Array(#3/26/2018#, #3/23/2018#) 'array of bank holidays, or a range in a
'sheet where the dates of bank holidays
'are saved in.

Dim LastPreviousWorkday As Date
LastPreviousWorkday = Application.WorksheetFunction.WorkDay(Date, -1, BankHolidays)

或者如果您想使用包含假期日期的工作表

Application.WorksheetFunction.WorkDay(Date, -1, Worksheets("MyHolidays").Range("A:A"))
'considers all dates in column A of sheet MyHolidays as non-workdays

关于excel - VBA - 如果前一天是银行假日,则打开前一个工作日的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49512481/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com