希望有人知道答案......我是擅长在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云端硬盘上相关电子表格的副本:
亲切的问候
Ť
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
答案 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