如何将包含特定数据列的每周工作表复制到新工作表中

时间:2015-03-17 14:33:27

标签: excel vba excel-vba

希望有人知道答案......我是擅长在excel使用VBA的人。

我正在尝试为我们的食堂员工创建每周杂货预算。 我一直试图让用户在新的工作表上创建每周预算。

到目前为止我创建的是包含“Stock Start”和“Stock End”列的Table。厨房负责人希望“Stock End”列在创建新工作表时移至“Stock Start”列。

我认为最好的方法是允许用户使用数据填充工作表,然后点击一个按钮就会创建一个新的工作表并将“stock end”列复制到“stock start”中。新创建的工作表。

我还想建立一个标准化的命名惯例,例如“从DD / MM / YY开始的一周。”但事实证明这太难了。

我设法找到了两段独立的代码。

第一部分复制“Master”工作表,并允许用户自己命名新工作表。这将是完美的,但它只依赖于“主”工作表。我更喜欢它复制活动工作表。

我用'阻止的代码的第二部分'。将数据从库存结束(G4:G83)复制到新工作表库存开始(C4:C83)。

但是这段代码需要知道它正在复制的工作表的名称......

由于这一点,我无法将2个代码作为一个工作。我迷路了...

以下是我的google云端硬盘上相关电子表格的副本:

Weekly Gorcery Budget

亲切的问候

Ť

Private Sub CommandButton1_Click()
    Dim sName As String
    Dim wks As Worksheet
    Worksheets("Master").Copy after:=Sheets(Worksheets.Count)
    Set wks = ActiveSheet
    Do While sName <> wks.Name
        sName = Application.InputBox _
          (Prompt:="Enter new worksheet name")
        On Error Resume Next
        wks.Name = sName
        On Error GoTo 0
    Loop
    Set wks = Nothing

    'Worksheets(1).Range("G4:G83").Copy
    'Worksheets(2).Range("C4:C83").PasteSpecial xlPasteValues

End Sub

2 个答案:

答案 0 :(得分:0)

而不是使用Worksheets("Master")Worksheets(1)使用ActiveSheet。而不是使用Worksheets(2)使用wks

答案 1 :(得分:0)

这是我用来完成所有工作的最终代码..

感谢AnotherParker的所有帮助!

Ť

Private Sub CommandButton1_Click()
    Dim sName As String
    Dim wks As Worksheet
    ActiveSheet.Copy after:=Sheets(Worksheets.Count)
    Set wks = ActiveSheet
    Do While sName <> wks.Name
        sName = Application.InputBox _
          (Prompt:="Enter new worksheet name")
        On Error Resume Next
        wks.Name = sName
        On Error GoTo 0
    Loop
    Set wks = Nothing

    ActiveSheet.Range("G4:G83").Copy
    ActiveSheet.Range("C4:C83").PasteSpecial xlPasteValues


End Sub