首页 > 解决方案 > 如何将单元格数据从模板表发送到 Microsoft excel 中的主表?

问题描述

我正在为一家咖啡馆创建生产管理表。它有一个名为 production 的主工作表,Production 有一个新的客户按钮,它创建一个新工作表并以编程方式复制发票模板并粘贴到新创建的工作表中。我想要的所有东西都会自动发送并汇总每个项目的总数,从所有工作表到主生产工作表。我一般可以这样做,但是当使用按钮插入新模板(在新创建的工作表中)时,单击它有点棘手。

 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 

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

标签: excelvba

解决方案


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

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

每次创建新客户时,都会根据Invoice模板创建一个新工作表。您需要一些代码来计算所有单个订单的总和,然后将其填充到工作Production表中。

我的建议是这样的:

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

我提供的代码显然只适用于“三明治面包”,但可以很容易地扩展到包括所有其他项目。我只是给你一个关于如何继续的想法。

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


推荐阅读