0
私は現在、銀行の休日のリストを保持する辞書を使用しています。現在の1日が銀行休業日であるかどうかを確認したい場合は、前日が銀行休業日だったかどうかをチェックし、3日前が銀行休業日だった場合は(銀行休日で、前週金曜日だった場合など) ?Excel VBA辞書の日付を確認する
辞書の日付を確認する際に問題が発生しています。私は文字列を比較することができます(私のIFクエリが動作するように文字列として日付を宣言します)。
私の下のコードで日付を確認する方法を教えてもらえますか?
Public currentDate As Long
Public Bankholiday As Boolean
Public DoubleBank As Boolean
Public asdfg As Date
Public currentDay As String
Public BankHolidays As Scripting.Dictionary
Public DiaryDate As String
そしてサブ次の作品は、変数タイプを変換することを私を発見した
Sub GetDate()
'Created to determin if a Bank Holiday needs to be taken into account for
Date to run
currentDate = Date - 1
Today = Date - 1
currentDay = Format(Date, "dddd") 'writes day out as string e.g. Monday,
Tuesday....
currentDate = Format(Date, "yyyymmdd") 'set format for SQL query
DiaryDate = Format(Date - 1, "dd/mm/yyyy")
'Set Dictionary Object
Set BankHolidays = CreateObject("Scripting.Dictionary")
'Add dates to Dictionary
BankHolidays.Add "01/01/2017", "B1"
BankHolidays.Add "02/05/2017", "B2"
BankHolidays.Add "14/04/2017", "B3"
BankHolidays.Add "17/04/2017", "B4"
BankHolidays.Add "01/05/2017", "B5"
BankHolidays.Add "29/05/2017", "B6"
BankHolidays.Add "28/08/2017", "B7"
BankHolidays.Add "25/12/2017", "B8"
BankHolidays.Add "26/12/2017", "B9"
BankHolidays.Add "01/01/2018", "B10"
BankHolidays.Add "30/03/2018", "B11"
BankHolidays.Add "02/04/2018", "B12"
BankHolidays.Add "07/05/2018", "B13"
BankHolidays.Add "28/05/2018", "B14"
BankHolidays.Add "27/08/2018", "B15"
BankHolidays.Add "25/12/2018", "B16"
BankHolidays.Add "26/12/2018", "B17"
BankHolidays.Add "04/05/2017", "B18"
BankHolidays.Add "03/05/2017", "B18"
'Check if Todays Date is in the dictionary
If BankHolidays.Exists(DiaryDate) Then
Today = Today - 1
MsgBox "1"
'For instances of 2 consecutive bankholidays in a row (no weekend in between)
If BankHolidays.Exists(Today) Then
Today = currentDate - 1
MsgBox "2"
End If
'For instances of 2 consecutive bankholidays in a row (WITH weekend in between)
If BankHolidays.Exists(Today - 2) Then
Today = currentDate - 1
MsgBox "3"
End If
End If
End Sub
テストされていないが、次のでしょうか? 'DiaryDate = CStr(CDate(DiaryDate)-2)' – Zerk