由macros复制后更改单元格值

下载表单以更好地理解。 https://www.dropbox.com/s/urncoww8prj6rc1/AccountabilityScorecardDigital.xlsm?dl=0

我正在创build一个具有自动创build工作表的工作簿。 除date以外,每张表格都具有相同的数据。 我只需要一个单元格“A1”来自动将其名称更改为下一个date范围。

For Example: Sheet1 Cell A1 "DEC 11-15 2017" Copied : Sheet2 Cell A1 "Dec 18-22 2017" Copied2 : Sheet3 Cell A1 "Dec 25-29 2017" Copied3 : Sheet4 Cell A1 "Jan 01-05 2017" 

它必须遵循这个命名惯例,以便表格的其余部分相应地更新。

干得好。

只需使用GetProperWeekName函数,然后按照需要进行提供。

例如, GetProperWeekName("DEC 11-15 2017", 7)

将返回:

DEC 18-22 2017

您可以使用可选参数添加日,月或年。

要添加一个星期,你会像我在我的例子中那样使用7

在创build新工作表时,只需执行如下操作即可更新A1

Range("A1") = GetProperWeekName(Range("A1"),7)

 Function GetProperWeekName(TheWeek As Variant, Optional DaysToAdd = 0, Optional MonthsToAdd = 0, Optional YearsToAdd = 0) As String Dim TheDate As Date TheDate = DateValue(Trim(Left(TheWeek, WorksheetFunction.Find("-", TheWeek) - 1))) If DaysToAdd <> 0 Then TheDate = DateAdd("d", DaysToAdd, TheDate) If MonthsToAdd <> 0 Then TheDate = DateAdd("m", MonthsToAdd, TheDate) If YearsToAdd <> 0 Then TheDate = DateAdd("y", YearsToAdd, TheDate) GetProperWeekName = UCase(Format(TheDate, "mmm")) & " " & Day(TheDate) & "-" & Day(DateAdd("d", 4, TheDate)) & " " & Year(TheDate) End Function 

结果:

结果

如果你想让它接受正常的date和格式化,那就容易了:

 Function GetProperWeekName(TheDate As Date, Optional DaysToAdd = 0, Optional MonthsToAdd = 0, Optional YearsToAdd = 0) As String If DaysToAdd <> 0 Then TheDate = DateAdd("d", DaysToAdd, TheDate) If MonthsToAdd <> 0 Then TheDate = DateAdd("m", MonthsToAdd, TheDate) If YearsToAdd <> 0 Then TheDate = DateAdd("y", YearsToAdd, TheDate) GetProperWeekName = UCase(Format(TheDate, "mmm")) & " " & Day(TheDate) & "-" & Day(DateAdd("d", 4, TheDate)) & " " & Year(TheDate) End Function 

如何正确更新您的工作表和date范围:

 Sub UpdateSheet() ActiveSheet.Copy After:=Sheets(ActiveSheet.Name) ActiveSheet.Name = GetProperWeekName(Range("A1"), 7) Range("A1") = GetProperWeekName(Range("A1"), 7) End Sub 

Resultzzz

QHarr的填充增加:

 Function GetProperWeekName(TheWeek As Variant, Optional DaysToAdd = 0, Optional MonthsToAdd = 0, Optional YearsToAdd = 0) As String Dim TheDate As Date TheDate = DateValue(Trim(Left(TheWeek, WorksheetFunction.Find("-", TheWeek) - 1))) If DaysToAdd <> 0 Then TheDate = DateAdd("d", DaysToAdd, TheDate) If MonthsToAdd <> 0 Then TheDate = DateAdd("m", MonthsToAdd, TheDate) If YearsToAdd <> 0 Then TheDate = DateAdd("y", YearsToAdd, TheDate) GetProperWeekName = UCase(Format(TheDate, "mmm")) & " " & Format(Day(TheDate), "00") & "-" & Format(Day(DateAdd("d", 4, TheDate)), "00") & " " & Year(TheDate) End Function