如何在Microsoft excel中将单元格数据从模板工作表发送到主工作表?

如何在Microsoft excel中将单元格数据从模板工作表发送到主工作表?,excel,vba,Excel,Vba,我正在为一家咖啡馆制作生产管理表。它有一个名为production的主表单,production有一个new customer按钮,该按钮创建一个新表单,按语法复制发票模板并粘贴到新创建的表单中。所有我想自动发送和汇总的每一个项目的总形式,所有表到主生产表。一般来说,我可以这样做,但当使用按钮单击插入新模板(在新创建的工作表中)时,它有点棘手 Private Sub CommandButton1_Click() If TextBox1.Value = "" Or TextBox2.Value

我正在为一家咖啡馆制作生产管理表。它有一个名为production的主表单,production有一个new customer按钮,该按钮创建一个新表单,按语法复制发票模板并粘贴到新创建的表单中。所有我想自动发送和汇总的每一个项目的总形式,所有表到主生产表。一般来说,我可以这样做,但当使用按钮单击插入新模板(在新创建的工作表中)时,它有点棘手

 Private Sub CommandButton1_Click()
If TextBox1.Value = "" Or TextBox2.Value = "" Then
   If MsgBox("Name and Address are Important", vbQuestion + vbOKOnly) <> vbYes Then


   Exit Sub
   End If
  End If

TotalSheets = ThisWorkbook.Worksheets.Count
CheckSheet = TextBox1.Value

For i = 1 To TotalSheets
 If LCase(ThisWorkbook.Worksheets(i).Name) = LCase(CheckSheet) Then
   If MsgBox("This Customer Name Already Exists, Choose a different Name", vbQuestion + vbOKOnly) <> vbYes Then


  Exit Sub

 End If
End If


Next
Sheets.Add after:=Sheets(Sheets.Count)
Sheets(ActiveSheet.Name).Name = TextBox1.Value
Worksheets("Invoice").Cells.Copy Worksheets(ActiveSheet.Name).Cells

End Sub 
Private子命令按钮1\u单击()
如果TextBox1.Value=“”或TextBox2.Value=“”,则
如果MsgBox(“姓名和地址很重要”,vbQuestion+vbOKOnly)vbYes则
出口接头
如果结束
如果结束
TotalSheets=ThisWorkbook.Worksheets.Count
CheckSheet=TextBox1.Value
对于i=1到总张数
如果LCase(ThisWorkbook.Worksheets(i).Name)=LCase(检查表),则
如果MsgBox(“此客户名称已存在,请选择其他名称”,vbQuestion+vbOKOnly)vbYes,则
出口接头
如果结束
如果结束
下一个
Sheets.Add after:=工作表(Sheets.Count)
工作表(ActiveSheet.Name).Name=TextBox1.Value
工作表(“发票”).Cells.Copy工作表(ActiveSheet.Name).Cells
端接头


如果所有图纸具有相同的布局,最简单的方法是使用带有图纸范围的公式。如果您需要从少于2张发票开始,则创建两张所有订单为空或零的虚拟发票表,以便它们不会影响总计。如果两个虚拟工作表分别称为A和B,则在主页上创建如下公式:

=SUM(A:B!A1)
这将对图纸A和B之间所有图纸上的单元格A1求和

确保工作表A和B是工作簿中的最后两张工作表,然后更改代码以在它们之间插入所有新发票:

Sheets.Add before:=Sheets("B")
然后隐藏图纸A和B,以便用户看不到它们。通过使用visual basic编辑器中的特殊设置,可以使用户无法取消隐藏它们。在visual basic编辑器中,选择图纸,确保属性在“视图”菜单中可见,然后将“可见”属性设置为“非常隐藏”:



另一种方法是修改每个公式的公式字符串以包含新工作表。

如果所有工作表都具有相同的布局,最简单的方法是使用具有工作表范围的公式。如果您需要从少于2张发票开始,则创建两张所有订单为空或零的虚拟发票表,以便它们不会影响总计。如果两个虚拟工作表分别称为A和B,则在主页上创建如下公式:

=SUM(A:B!A1)
这将对图纸A和B之间所有图纸上的单元格A1求和

确保工作表A和B是工作簿中的最后两张工作表,然后更改代码以在它们之间插入所有新发票:

Sheets.Add before:=Sheets("B")
然后隐藏图纸A和B,以便用户看不到它们。通过使用visual basic编辑器中的特殊设置,可以使用户无法取消隐藏它们。在visual basic编辑器中,选择图纸,确保属性在“视图”菜单中可见,然后将“可见”属性设置为“非常隐藏”:



另一种方法是修改每个公式的公式字符串以包含新的工作表。

因此,如果我做对了,您有一个名为
Production
的主工作表,一个用作发票模板的工作表,名为
Invoice
,以及另外两个名为
Recipes
Nav
的工作表

现在我假设你没有更多的工作表了

每次创建新客户时,都会根据
发票
模板创建新的工作表。您需要的是一些代码,这些代码将计算所有单个订单的总和,然后应填充到
生产
表中

我的建议如下:

Sub updateTotalOrders()
Dim sht As Worksheet
Dim sumOfOrders As Long
sumOfOrders = 0
For Each sht In ThisWorkbook.Worksheets
    If sht.Name <> "Production" And sht.Name <> "Invoice" And sht.Name <> "Nav" Then 'add here any other sheets that should be excluded from the sum
        sumOfOrders = sumOfOrders + sht.Range("C4")
    End If
Next sht
ThisWorkbook.Worksheets("Production").Range("") = sumOfOrders 'Use whichever range you want
End Sub
Sub-updateTotalOrders()
将sht变暗为工作表
模糊的和长的顺序一样
sumOfOrders=0
用于此工作簿中的每个sht。工作表
如果sht.名称为“生产”,sht.名称为“发票”,sht.名称为“资产净值”,则“在此添加应排除在总额之外的任何其他表格
sumOfOrders=sumOfOrders+短程(“C4”)
如果结束
下一步
ThisWorkbook.Worksheets(“Production”).Range(“”=sumOfOrders’使用您想要的范围
端接头
我提供的代码显然只适用于“三明治面包”,但可以很容易地扩展到包括所有其他项目。我只是给你一个如何继续下去的想法


总而言之,这段代码基本上遍历所有工作表,并检查它们是否对应于客户。如果他们这样做了,那么它会更新一个总数。当循环停止时,最终结果将传递给
生产

,因此,如果我做对了,您有一个名为
生产
的主工作表,一个用作发票模板的工作表,名为
发票
,另外两个工作表名为
配方
导航

现在我假设你没有更多的工作表了

每次创建新客户时,都会根据
发票
模板创建新的工作表。您需要的是一些代码,这些代码将计算所有单个订单的总和,然后应填充到
生产
表中

我的建议如下:

Sub updateTotalOrders()
Dim sht As Worksheet
Dim sumOfOrders As Long
sumOfOrders = 0
For Each sht In ThisWorkbook.Worksheets
    If sht.Name <> "Production" And sht.Name <> "Invoice" And sht.Name <> "Nav" Then 'add here any other sheets that should be excluded from the sum
        sumOfOrders = sumOfOrders + sht.Range("C4")
    End If
Next sht
ThisWorkbook.Worksheets("Production").Range("") = sumOfOrders 'Use whichever range you want
End Sub
Sub-updateTotalOrders()
将sht变暗为工作表
模糊的和长的顺序一样
sumOfOrders=0
用于此工作簿中的每个sht。工作表
如果sht.名称为“生产”,sht.名称为“发票”,sht.名称为“资产净值”,则“在此添加应排除在总额之外的任何其他表格
sumOfOrders=sumOfOrders+短程(“C4”)
如果结束
下一步
ThisWorkbook.Worksheets(“Production”).Range(“”=sumOfOrders’使用您想要的范围
端接头
我提供的代码显然只适用于“三明治面包”,但可以很容易地扩展到包括所有其他项目。我只是给你一个如何继续下去的想法

总而言之,这家公司