Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1
Default AutoFill Weekdays problem


Hello,

I am fairly new to programming so bear with me. I have a number o
sheets that I have to update monthly which I am trying to automate.
have been able to do everything but avoid pasting holidays when I us
autofill and paste special weekdays. Is there anway, similar to th
networkdays function, in programming where I can only pastespecia
actual workdays and avoid the holidays? I know I can use a look u
functon and then delete but I would rather avoid that. Any help i
appreciated

--
cooter2
-----------------------------------------------------------------------
cooter24's Profile: http://www.excelforum.com/member.php...fo&userid=2961
View this thread: http://www.excelforum.com/showthread.php?threadid=49952

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,651
Default AutoFill Weekdays problem

On Mon, 9 Jan 2006 14:37:31 -0600, cooter24
wrote:


Hello,

I am fairly new to programming so bear with me. I have a number of
sheets that I have to update monthly which I am trying to automate. I
have been able to do everything but avoid pasting holidays when I use
autofill and paste special weekdays. Is there anway, similar to the
networkdays function, in programming where I can only pastespecial
actual workdays and avoid the holidays? I know I can use a look up
functon and then delete but I would rather avoid that. Any help is
appreciated.


Why not use the networkdays function, with the optional holidays argument,
within VBA to generate your list of weekdays?

You can set a reference to atpvbaen.xls in VBA and then use the ATP functions
directly.

No matter what, you'll still need a list of the holiday dates someplace.
--ron
  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1
Default AutoFill Weekdays problem


Ron,

Thanks for your response. How would I add the network days function
into the autofill weekdays code?


--
cooter24
------------------------------------------------------------------------
cooter24's Profile: http://www.excelforum.com/member.php...o&userid=29619
View this thread: http://www.excelforum.com/showthread...hreadid=499525

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,651
Default AutoFill Weekdays problem

On Mon, 9 Jan 2006 16:19:33 -0600, cooter24
wrote:


Ron,

Thanks for your response. How would I add the network days function
into the autofill weekdays code?


Perhaps I misunderstood; I thought you were using code now to generate the
weekdays. If you are, please post the code.

If not, please be more descriptive about exactly what you are doing.


--ron
  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 195
Default AutoFill Weekdays problem

cooter24 wrote


Ron,

Thanks for your response. How would I add the network days function
into the autofill weekdays code?



I've been watching this thread and thought I'd offer my 2-cents.
I have a few workbooks that I want new weekday dates each month.
Weekdays in these workbooks are in the range C2:AA2, separated in 5-day
blocks by thick borders. The routine I'm posting does the work for each
of 5 sheets in one particular workbook. It gets its starting date early
on and puts it in C2, then autofills, then clears any dates not in the
new month, then adds back borders. Of course you could adapt it to a
single sheet and change ranges to suit your needs.

Sub NewMonth()
Dim sh As Worksheet, c As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
For Each sh In Sheets(Array(1, 2, 3, 4, 5))
If sh.Range("W2") 1 And sh.Range("AA2") 1 Then
sh.Range("C2") = sh.Range("W2") + 7
ElseIf sh.Range("W2") = 0 And sh.Range("AA2") = 0 Then
sh.Range("C2") = sh.Range("R2") + 7
Else: sh.Range("C2") = sh.Range("W2")
End If
sh.Range("C2").AutoFill Destination:=sh.Range("C2:AA2"), _
Type:=xlFillWeekdays
For Each c In sh.Range("C2:G2")
If Day(c.Value) 24 Then c.ClearContents
Next
For Each c In sh.Range("W2:AA2")
If Day(c.Value) < 8 Then c.ClearContents
Next
sh.Range("G2,L2,Q2,V2,AA2").Borders(xlEdgeRight).W eight = xlThick
Next: Sheets(1).Select
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

--
David


  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,651
Default AutoFill Weekdays problem

On Tue, 10 Jan 2006 02:41:40 -0800, David wrote:

cooter24 wrote


Ron,

Thanks for your response. How would I add the network days function
into the autofill weekdays code?



I've been watching this thread and thought I'd offer my 2-cents.
I have a few workbooks that I want new weekday dates each month.
Weekdays in these workbooks are in the range C2:AA2, separated in 5-day
blocks by thick borders. The routine I'm posting does the work for each
of 5 sheets in one particular workbook. It gets its starting date early
on and puts it in C2, then autofills, then clears any dates not in the
new month, then adds back borders. Of course you could adapt it to a
single sheet and change ranges to suit your needs.

Sub NewMonth()
Dim sh As Worksheet, c As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
For Each sh In Sheets(Array(1, 2, 3, 4, 5))
If sh.Range("W2") 1 And sh.Range("AA2") 1 Then
sh.Range("C2") = sh.Range("W2") + 7
ElseIf sh.Range("W2") = 0 And sh.Range("AA2") = 0 Then
sh.Range("C2") = sh.Range("R2") + 7
Else: sh.Range("C2") = sh.Range("W2")
End If
sh.Range("C2").AutoFill Destination:=sh.Range("C2:AA2"), _
Type:=xlFillWeekdays
For Each c In sh.Range("C2:G2")
If Day(c.Value) 24 Then c.ClearContents
Next
For Each c In sh.Range("W2:AA2")
If Day(c.Value) < 8 Then c.ClearContents
Next
sh.Range("G2,L2,Q2,V2,AA2").Borders(xlEdgeRight). Weight = xlThick
Next: Sheets(1).Select
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub


Without testing it, it looks appropriate.

Since the OP was asking about excluding holidays, I would probably suggest
changing the auto-fill to a routine using the Analysis Tool Pak function
"Workday". I would set a reference to atpvbaen.xls

The Holiday list could either be an array within the macro, or it could be on a
range in the worksheet.

Something like:

========================
..
..
..
Holidays = Array(DateSerial(2006, 1, 1), _
DateSerial(2006, 5, 30), DateSerial(2006, 7, 4))
StartDt = DateSerial(2006, 7, 1)

For i = 2 To 25
With DtLabels(1, i)
.Value = workday(StartDt - 1, i, Holidays)
.NumberFormat = "ddd dd-mmm-yyy"
If Month(.Value) < Month(StartDt) Then .ClearContents
End With
Next i
..
..
..
=================================


--ron
  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 195
Default AutoFill Weekdays problem

Ron Rosenfeld wrote

On Tue, 10 Jan 2006 02:41:40 -0800, David
wrote:

cooter24 wrote


Ron,

Thanks for your response. How would I add the network days function
into the autofill weekdays code?



I've been watching this thread and thought I'd offer my 2-cents.
I have a few workbooks that I want new weekday dates each month.
Weekdays in these workbooks are in the range C2:AA2, separated in
5-day blocks by thick borders. The routine I'm posting does the work
for each of 5 sheets in one particular workbook. It gets its starting
date early on and puts it in C2, then autofills, then clears any dates
not in the new month, then adds back borders. Of course you could
adapt it to a single sheet and change ranges to suit your needs.

Sub NewMonth()
Dim sh As Worksheet, c As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
For Each sh In Sheets(Array(1, 2, 3, 4, 5))
If sh.Range("W2") 1 And sh.Range("AA2") 1 Then
sh.Range("C2") = sh.Range("W2") + 7
ElseIf sh.Range("W2") = 0 And sh.Range("AA2") = 0 Then
sh.Range("C2") = sh.Range("R2") + 7
Else: sh.Range("C2") = sh.Range("W2")
End If
sh.Range("C2").AutoFill Destination:=sh.Range("C2:AA2"), _
Type:=xlFillWeekdays
For Each c In sh.Range("C2:G2")
If Day(c.Value) 24 Then c.ClearContents
Next
For Each c In sh.Range("W2:AA2")
If Day(c.Value) < 8 Then c.ClearContents
Next
sh.Range("G2,L2,Q2,V2,AA2").Borders(xlEdgeRight) .Weight = xlThick
Next: Sheets(1).Select
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub


Without testing it, it looks appropriate.

Since the OP was asking about excluding holidays, I would probably
suggest changing the auto-fill to a routine using the Analysis Tool
Pak function "Workday". I would set a reference to atpvbaen.xls

The Holiday list could either be an array within the macro, or it
could be on a range in the worksheet.

Something like:

========================
.
.
.
Holidays = Array(DateSerial(2006, 1, 1), _
DateSerial(2006, 5, 30), DateSerial(2006, 7, 4))
StartDt = DateSerial(2006, 7, 1)

For i = 2 To 25
With DtLabels(1, i)
.Value = workday(StartDt - 1, i, Holidays)
.NumberFormat = "ddd dd-mmm-yyy"
If Month(.Value) < Month(StartDt) Then .ClearContents
End With
Next i
.
.
.
=================================


--ron


Misunderstood intent of excluding holidays. I thought that meant not
accounting for them at all. Sorry if I wasted everyone's time.

--
David
  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 195
Default AutoFill Weekdays problem

David wrote

If Month(.Value) < Month(StartDt) Then .ClearContents


I *was* able to adapt this to simplify my original routine for purging
dates that weren't in the new month:

For Each c In sh.Range("C2:G2")
If Day(c.Value) 24 Then c.ClearContents
Next
For Each c In sh.Range("W2:AA2")
If Day(c.Value) < 8 Then c.ClearContents
Next

Was shortened to:

For Each c In sh.Range("C2:AA2")
If Month(c.Value) < Month(Range("G2")) Then c.ClearContents
Next

So lurking here wasn't a total loss :)

--
David
  #9   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,651
Default AutoFill Weekdays problem

On Wed, 11 Jan 2006 13:52:49 -0800, David wrote:

David wrote

If Month(.Value) < Month(StartDt) Then .ClearContents


I *was* able to adapt this to simplify my original routine for purging
dates that weren't in the new month:

For Each c In sh.Range("C2:G2")
If Day(c.Value) 24 Then c.ClearContents
Next
For Each c In sh.Range("W2:AA2")
If Day(c.Value) < 8 Then c.ClearContents
Next

Was shortened to:

For Each c In sh.Range("C2:AA2")
If Month(c.Value) < Month(Range("G2")) Then c.ClearContents
Next

So lurking here wasn't a total loss :)


I know thatt *I* have learned a lot by lurking here and trying to help others.
I think I've probably learned more new things, that way.


--ron
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Autofill Problem Drew Excel Discussion (Misc queries) 2 August 27th 07 07:58 PM
Autofill Problem Lizzy Excel Discussion (Misc queries) 5 March 20th 07 01:47 PM
Autofill problem Teethless mama Excel Discussion (Misc queries) 0 November 30th 06 02:53 AM
Autofill problem Trout Excel Discussion (Misc queries) 0 November 30th 06 12:19 AM
Autofill problem dickives Excel Worksheet Functions 1 January 16th 06 10:35 PM


All times are GMT +1. The time now is 07:43 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"