このコードでは、年間に変化を考慮していないので、あなたは、ワークブックで、すでに52週でそれを実行した場合、それは喜んで週53を作成し、54とに。
現在の週を選択する必要はありません。コードは、Week xx
という名前のシートに基づいて最も高い週番号を検索します。
D2:G2とH5:K8の範囲をクリアします。 'Week xx'!
へのシート上の参照は、キーボードのCtrl+H
と同じ方法で前週に更新されます。
Sub CreateNewSheet()
Dim wrkSht As Worksheet
Dim lWkNum As Long
Dim lCurNum As Long
Dim sht_LastWeek As Worksheet
Dim sht_NewWeek As Worksheet
'Find previous week and set reference to it.
For Each wrkSht In ThisWorkbook.Worksheets
If IsNumeric(Replace(wrkSht.Name, "Week ", "")) Then
lCurNum = CLng(Replace(wrkSht.Name, "Week ", ""))
If lCurNum > lWkNum Then lWkNum = lCurNum
End If
Next wrkSht
Set sht_LastWeek = ThisWorkbook.Worksheets("Week " & lWkNum)
'Create new sheet, set reference to it and rename.
sht_LastWeek.Copy After:=Sheets(sht_LastWeek.Index)
Set sht_NewWeek = Sheets(sht_LastWeek.Index + 1)
sht_NewWeek.Name = "Week " & lCurNum + 1
'Clear the cells and relink formula to previous sheet.
With sht_NewWeek
.Range("D2:G2,H5:K8").ClearContents
.Cells.Replace What:="'Week " & lCurNum - 1 & "'!", _
Replacement:="'Week " & lCurNum & "'!", _
LookAt:=xlPart
End With
End Sub
消去したい内容の範囲はどのくらいですか? –