Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
克隆工作表,命名它,清除单元格-Excel VBA_Vba_Excel - Fatal编程技术网

克隆工作表,命名它,清除单元格-Excel VBA

克隆工作表,命名它,清除单元格-Excel VBA,vba,excel,Vba,Excel,我不太擅长VBA,但我正在努力实现以下目标: 我有一张表格(第50周),上面有一张表格,上面有一些信息 我想要一个按钮(宏),创建一个新的工作表(第51周),它有 在同一个表中,只应清除内容(特定 单元格范围) 表中的第一列应基于前一周的公式。如何使其适应每一周的工作 如何根据前一周的情况复制工作表并确定名称?如何在同一宏中清除新工作表的某些单元格 到目前为止,我只有: Sub New_Week() Worksheets(ActiveSheet.Name).Copy After:=W

我不太擅长VBA,但我正在努力实现以下目标:

  • 我有一张表格(第50周),上面有一张表格,上面有一些信息
  • 我想要一个按钮(宏),创建一个新的工作表(第51周),它有 在同一个表中,只应清除内容(特定 单元格范围)
  • 表中的第一列应基于前一周的公式。如何使其适应每一周的工作
如何根据前一周的情况复制工作表并确定名称?如何在同一宏中清除新工作表的某些单元格

到目前为止,我只有:

Sub New_Week()
    Worksheets(ActiveSheet.Name).Copy After:=Worksheets(ActiveSheet.Name)
End Sub

这段代码不考虑年份的变化,因此如果您在工作簿中已经有52周的时间运行它,它将很高兴地创建第53周、第54周等等

您不需要选择当前周,代码将根据命名为
week xx
的工作表搜索最高周数
它清除D2:G2和H5:K8范围。 工作表上任何关于
“第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

您希望清除的内容范围是什么?