Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I have a spreadsheet to track time spent on various projects. I would like
to create a macro (tied to a button) that users can click to copy the previous months worksheet and rename it to the current month and year. I.E. I may have a worksheet named "DECEMBER 2005" with current projects filled in. I would like to copy that sheet and have it renamed to "JANUARY 2006" if I run the macro in Jan of 2006. Similarly, in FEB of 2006 I would like to copy the JANUARY 2006 sheet and rename to FEBRUARY 2006, and so on. |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Here's a set of simple steps... You can just extract the Month name from
the Now() function. ActiveSheet.Cells.Select Selection.Copy Worksheets.Add Cells.Select ActiveSheet.Paste ActiveSheet.Name = "February" "Dan E." <Dan wrote in message ... I have a spreadsheet to track time spent on various projects. I would like to create a macro (tied to a button) that users can click to copy the previous months worksheet and rename it to the current month and year. I.E. I may have a worksheet named "DECEMBER 2005" with current projects filled in. I would like to copy that sheet and have it renamed to "JANUARY 2006" if I run the macro in Jan of 2006. Similarly, in FEB of 2006 I would like to copy the JANUARY 2006 sheet and rename to FEBRUARY 2006, and so on. |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
This is taken from another project but does something similar. Assumes
the sheet you want to copy is the last (right most) sheet in the workbook. Sub NewMonthSheet() Dim lSht As Worksheet Dim nSht As Worksheet Dim shName As String Set lSht = Sheets(Sheets.Count) If IsDate(lSht.Name) Then shName = Format(DateAdd("m", 1, lSht.Name), "mmmm yyyy") On Error Resume Next 'Tests that sheet doesn't already exist Set nSht = Sheets(shName) On Error GoTo 0 If nSht Is Nothing Then lSht.Copy after:=Sheets(Sheets.Count) Sheets(Sheets.Count).Name = shName Else MsgBox "Sheet """ & shName & """ already exists!" _ , vbCritical End If Else MsgBox "Last sheet name does not" & Chr(10) _ & "represent a month!", vbCritical End If End Sub Hope this helps Rowan Dan E. wrote: I have a spreadsheet to track time spent on various projects. I would like to create a macro (tied to a button) that users can click to copy the previous months worksheet and rename it to the current month and year. I.E. I may have a worksheet named "DECEMBER 2005" with current projects filled in. I would like to copy that sheet and have it renamed to "JANUARY 2006" if I run the macro in Jan of 2006. Similarly, in FEB of 2006 I would like to copy the JANUARY 2006 sheet and rename to FEBRUARY 2006, and so on. |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Thanks! That was almost 100% what I wanted to do. I wanted the previous
month to be the 2nd sheet in the workbook, and the new one to become the 2nd sheet. Here is the modified code: Sub NewMonthSheet() Dim lSht As Worksheet Dim nSht As Worksheet Dim shName As String Set lSht = Sheets(2) If IsDate(lSht.Name) Then shName = Format(DateAdd("m", 1, lSht.Name), "mmmm yyyy") On Error Resume Next 'Tests that sheet doesn't already exist Set nSht = Sheets(shName) On Error GoTo 0 If nSht Is Nothing Then lSht.Copy after:=Sheets(1) Sheets(2).Name = shName Else MsgBox "Sheet """ & shName & """ already exists!" _ , vbCritical End If Else MsgBox "Last sheet name does not" & Chr(10) _ & "represent a month!", vbCritical End If End Sub "Rowan Drummond" wrote: This is taken from another project but does something similar. Assumes the sheet you want to copy is the last (right most) sheet in the workbook. Sub NewMonthSheet() Dim lSht As Worksheet Dim nSht As Worksheet Dim shName As String Set lSht = Sheets(Sheets.Count) If IsDate(lSht.Name) Then shName = Format(DateAdd("m", 1, lSht.Name), "mmmm yyyy") On Error Resume Next 'Tests that sheet doesn't already exist Set nSht = Sheets(shName) On Error GoTo 0 If nSht Is Nothing Then lSht.Copy after:=Sheets(Sheets.Count) Sheets(Sheets.Count).Name = shName Else MsgBox "Sheet """ & shName & """ already exists!" _ , vbCritical End If Else MsgBox "Last sheet name does not" & Chr(10) _ & "represent a month!", vbCritical End If End Sub Hope this helps Rowan Dan E. wrote: I have a spreadsheet to track time spent on various projects. I would like to create a macro (tied to a button) that users can click to copy the previous months worksheet and rename it to the current month and year. I.E. I may have a worksheet named "DECEMBER 2005" with current projects filled in. I would like to copy that sheet and have it renamed to "JANUARY 2006" if I run the macro in Jan of 2006. Similarly, in FEB of 2006 I would like to copy the JANUARY 2006 sheet and rename to FEBRUARY 2006, and so on. |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
You're welcome.
Dan E. wrote: Thanks! That was almost 100% what I wanted to do. I wanted the previous month to be the 2nd sheet in the workbook, and the new one to become the 2nd sheet. Here is the modified code: Sub NewMonthSheet() Dim lSht As Worksheet Dim nSht As Worksheet Dim shName As String Set lSht = Sheets(2) If IsDate(lSht.Name) Then shName = Format(DateAdd("m", 1, lSht.Name), "mmmm yyyy") On Error Resume Next 'Tests that sheet doesn't already exist Set nSht = Sheets(shName) On Error GoTo 0 If nSht Is Nothing Then lSht.Copy after:=Sheets(1) Sheets(2).Name = shName Else MsgBox "Sheet """ & shName & """ already exists!" _ , vbCritical End If Else MsgBox "Last sheet name does not" & Chr(10) _ & "represent a month!", vbCritical End If End Sub "Rowan Drummond" wrote: This is taken from another project but does something similar. Assumes the sheet you want to copy is the last (right most) sheet in the workbook. Sub NewMonthSheet() Dim lSht As Worksheet Dim nSht As Worksheet Dim shName As String Set lSht = Sheets(Sheets.Count) If IsDate(lSht.Name) Then shName = Format(DateAdd("m", 1, lSht.Name), "mmmm yyyy") On Error Resume Next 'Tests that sheet doesn't already exist Set nSht = Sheets(shName) On Error GoTo 0 If nSht Is Nothing Then lSht.Copy after:=Sheets(Sheets.Count) Sheets(Sheets.Count).Name = shName Else MsgBox "Sheet """ & shName & """ already exists!" _ , vbCritical End If Else MsgBox "Last sheet name does not" & Chr(10) _ & "represent a month!", vbCritical End If End Sub Hope this helps Rowan Dan E. wrote: I have a spreadsheet to track time spent on various projects. I would like to create a macro (tied to a button) that users can click to copy the previous months worksheet and rename it to the current month and year. I.E. I may have a worksheet named "DECEMBER 2005" with current projects filled in. I would like to copy that sheet and have it renamed to "JANUARY 2006" if I run the macro in Jan of 2006. Similarly, in FEB of 2006 I would like to copy the JANUARY 2006 sheet and rename to FEBRUARY 2006, and so on. |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
3-Color Scale Vlookup for Current Month/Previous/Pre-Previous | Excel Discussion (Misc queries) | |||
Subtract a future month from the current month to get remaining m. | Excel Worksheet Functions | |||
Retrieve data for previous 3, 6, 12 month given current month | Excel Worksheet Functions | |||
automatically update chart plotting current month and previous 6 | Charts and Charting in Excel | |||
Calculate the first day of the month for the current month? | Excel Discussion (Misc queries) |