Solved

# Amend date function

Posted on 2012-04-02
257 Views
Hi,

Below is a date function that i use to test to see whether it is the first working day of the month and if it is i do some other stuff.

Can i have this amended so it checks to see if it is the 2nd day of the working day of the month

Thanks
Seamus

Function IsFirstWorkingDay(dt As Date) As Boolean
Dim FirstWorkingDay As Date

FirstWorkingDay = DateSerial(Year(dt), Month(dt), 1)
Select Case Weekday(FirstWorkingDay, vbMonday)
Case 6
FirstWorkingDay = FirstWorkingDay + 2
Case 7
FirstWorkingDay = FirstWorkingDay + 1
End Select

IsFirstWorkingDay = dt = FirstWorkingDay

End Function
0
Question by:Seamus2626
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• Learn & ask questions
• 3
• 3

LVL 6

Expert Comment

ID: 37796321
hi this will do the trick (it now marks the 2nd working day)

Function IsFirstWorkingDay(dt As Date) As Boolean
Dim FirstWorkingDay As Date

FirstWorkingDay = DateSerial(Year(dt), Month(dt), 1)
Select Case Weekday(FirstWorkingDay, vbMonday)
Case 6
FirstWorkingDay = FirstWorkingDay + 3
Case 7
FirstWorkingDay = FirstWorkingDay + 2
End Select

IsFirstWorkingDay = dt = FirstWorkingDay

End Function
0

LVL 85

Expert Comment

ID: 37796342
Try
``````Function IsSecondWorkingDay(dt As Date) As Boolean
Dim SecondWorkingDay As Date

SecondWorkingDay = DateSerial(Year(dt), Month(dt), 2)
Select Case Weekday(SecondWorkingDay , vbMonday)
Case 6
FirstWorkSecondWorkingDay = SecondWorkingDay + 2
Case 7
SecondWorkingDay = SecondWorkingDay + 1
End Select

IsSecondWorkingDay = dt = SecondWorkingDay

End Function
``````
0

Author Comment

ID: 37796398
I have tried to use these but my syntax in the sub is wrong, i am trying

But am getting argument not optional and its pointing to IsSecondWorkingDay

How can i call this function, ask if its true and if it is, do the sub DoMonthEnd

Thanks
Seamus

If IsSecondWorkingDay = True Then

DoMonthEnd

End If

End If
0

LVL 85

Expert Comment

ID: 37796421
You have to pass it a date to check, just as you did the original function. For example, to check today:

`````` If IsSecondWorkingDay(Date) Then
``````
0

Author Comment

ID: 37796536
Hey guys, both of your functions bring me into DoMonthEnd today, when i shouldnt be coming in today as it is not the 2nd working day of the month. It is the first working day.

SecondWorkingDay

This equals 02/04/2012 in your code Rory when it should be 03/04/2012

Thanks
Seamus
0

LVL 85

Accepted Solution

Rory Archibald earned 500 total points
ID: 37796586
``````Function IsSecondWorkingDay(dt As Date) As Boolean
Dim SecondWorkingDay As Date

SecondWorkingDay = DateSerial(Year(dt), Month(dt), 2)
Select Case Weekday(SecondWorkingDay, vbMonday)
Case 1
SecondWorkingDay = SecondWorkingDay + 1
Case 6
SecondWorkingDay = SecondWorkingDay + 2
Case 7
SecondWorkingDay = SecondWorkingDay + 3
End Select

IsSecondWorkingDay = dt = SecondWorkingDay

End Function
``````
0

Author Closing Comment

ID: 37796631
Thats the one, thanks!
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Access developers frequently have requirements to interact with Excel (import from or output to) in their applications.  You might be able to accomplish this with the TransferSpreadsheet and OutputTo methods, but in this series of articles I will diâ€¦
This article describes a serious pitfall that can happen when deleting shapes using VBA.
This Micro Tutorial demonstrate the bugs in Microsoft Excel for Mac with Pivot Charts.
This Micro Tutorial will demonstrate the scrolling table in Microsoft Excel using the INDEX function.
###### Suggested Courses
Course of the Month7 days, 23 hours left to enroll

#### 729 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.