添加新数据时Excel表格不扩展

我有一个Excel电子表格,其中包含在同一个选项卡上的四个数据表。 每个最后3列包含公式。

然后我有一个VBA代码执行一个SQL查询SQL Server表中,并返回一组列数来更新四个表中的每一个。

对于其中三个表,数据被粘贴,表自动扩展,公式被复制到表的末尾。

但是,对于第一个表,数据将被粘贴,但表不会展开,因此公式不会被添加到表外的行中。

我已经高高在上寻找修复,但没有快乐。 我search了没有运气的数据提取VBA代码(代码是一个完全匹配),并没有在表中的喜悦。 我也检查选项菜单的自动格式为您键入设置,但一切似乎很好。

有人对我有什么想法吗?

谢谢,

大卫。

大家好,

想知道是否有人有这个答案,但同时我已经欺骗代码自动调整表的大小,根据最后一个数据单元的行号。

谢谢,

大卫。

最常见的原因是由于不同数量的或错误alignment的列(垂直堆叠的表格)或不同数量的或错误alignment的行(水平堆叠的表格)。

为了简单起见,让我们使用垂直堆叠的表格来说明发生了什么。 考虑一个具有2列的上表,以及具有3的下表。如果我们尝试向上表插入一行,则XL尝试将表下的所有单元格向下推,但是仅将表格下方的单元格向下推。 所以在这种情况下,2列以下的单元格将被压低。 XL很快意识到,如果只推下2列,下表中的第三列将不会被推下,导致下表歪斜。 XL没有试图弄清楚如何移动较低的表格。 它只是拒绝尝试。

将列添加到左侧的表中也是如此,右侧有表。 如果将列添加到表格会导致表格的行向右倾斜,XL拒绝提供帮助。

为了避免这个问题,我们可以做一些事情:

  • 将最大的表保留在顶部和左侧,并alignment所有表的第一列和第一行。
  • 如果只有行添加到表中,请不要垂直堆叠它们
  • 如果只有列被添加到表中,请不要水平堆叠它们。

这是一个在数据被复制到表底部后强制扩展表的例子。 这是通过调整表格的大小来完成的。 原来该表没有自动resize,因为它有更多的计算列。 代码的第一行查找最后一行数据,第二行显示表格需要调整的范围。 第三行将表格调整到新的范围。 用您的工作表名称和表名replacesXXX和tXXX。

Sub ResizeTableXXX() myLastrowOfData = sXXX.Range("A1000000").End(xlUp).Row myNewRangeSize = "$A$5:$P$" & myLastrowOfData sXXX.ListObjects("tXXX").Resize Range(myNewRangeSize) End Sub 

HIH