在Excel中将数据input到多个表单的最佳方法是什么?

基本上我需要能够有几个特定的​​类别,如电脑和笔记本电脑的销售表。 我还需要一个显示所有销售的主表。

对于input,我使用input框和一个下拉菜单来select哪个类别(PC或笔记本电脑),然后这个input只是与销售信息一起放入一张大桌子。 我只是想知道把这些数据放在一个单独的工作表中的最好方法是什么? 我有点松了一步从哪里开始。 我想可能在VB中使用IF语句,如果input是例如PC然后也插入工作表PC,但这似乎是一个相当低效率的方式这样做。

你的想法非常感谢。

如果你不确定在哪里放置你的VB代码,最好不要在其中一个表单后面添加代码,而是在一个单独的模块中添加代码。 另一方面,您将需要一个入口点在特定事件中调用的代码。 这可能是一个工作表事件(例如,更改事件),或者只是当用户需要更新主表时,用户必须激活的button或菜单。 从那里调用你的模块代码。

如果你能给我们提供一个具体的例子,我们可以给你一个更好的答案。

使用工作表更改事件:将如下代码添加到每个input工作表:

Private Sub Worksheet_Change(ByVal Target As Range) UpdateMainSheet(ActiveSheet) ' or UpdateMainSheet(Target) End Sub 

UpdateMainSheet应该是一个单独的模块中的公共Sub,它将input数据从给定图纸复制到主图纸(也应该删除已经在给定图纸上删除的主图纸数据)。

是否必须在2张表中存储相同的logging?

如果只是一次只能看到PC或笔记本电脑,则可以随时使用filter。

如果用户在input后更新logging,以及如果用户不是在主表格中,而是在Clone_Laptop表格中进行编辑呢? 这将带来各种各样的混乱,除非你更新两种方式,即

对于任何表单(Master,Clone_PC,Clone_Laptop)中的每一项变更,您都必须将整个logging复制到另一个表单中,以保持表单的同步,这意味着您必须

  • 通过一个唯一的键在目标表中findlogging(你有这样的吗?)
  • 如果find,则用源行replace当前目标行
  • 如果找不到,则将源行复制到第一个空目标行

因为这样一个例程 – 如果编写正确 – 可能会采取两种方式,你一定会把它放在一个单独的模块中,并从每个Worksheet_Change()事件过程调用它,传递源行( Target.EntireRow )和目标工作表。

提示:注意对问题进行适当的抽象。 说 – 如果你创build一个包含类别列表和表格名称的额外表格,你可以自由地确定哪个类别应该去哪张表,你可以给同一表格2个或更多的类别,你有一个很好的主表中的类别validation列表。 最后,对于每个可能创build新类别的新工作表,将添加1行代码(将“MasterSheet”作为目标参数调用Sync例程)