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

时间:2013-11-13 15:07:04

标签: excel vba

我有一个Excel电子表格,它在同一个标​​签上包含四个数据表。每个最后3列包含公式。

然后我有一个vba代码,它在SQL Server表中执行sql查找并返回一组列来更新四个表中的每一个。

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

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

我已经搜索了高低,但没有快乐。我已经搜索了数据提取VBA代码而没有运气(代码完全匹配)并且表属性中没有任何乐趣。我还检查了“选择”菜单中的“自动格式化您输入”设置,但一切似乎都很好。

有没有人对我有任何想法?

谢谢,

大卫。

大家好,

很想知道是否有人有这方面的答案,但同时我捏造了代码,根据最后一个数据单元的行号自动调整表的大小。

谢谢,

大卫。

3 个答案:

答案 0 :(得分:0)

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

为简单起见,让我们使用垂直堆叠的表来说明正在发生的事情。考虑一个带有2列的上表和带有3的下表。如果我们尝试向上表插入一行,XL会尝试将表下方的所有单元格向下推,但只有表格下方的单元格。因此,在这种情况下,2列以下的单元格将被下推。 XL很快意识到如果它只向下推2列,下表中的第三列将不会被向下推,导致下表偏斜。 XL没有试图找出如何移动下表。它只是拒绝尝试。

向左侧的表添加列也是如此,右侧有表。如果向表中添加列会导致向右偏移表的行,则XL拒绝提供帮助。

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

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

答案 1 :(得分:0)

此处是在将数据复制到表格底部后强制扩展表格的示例。这是通过调整表格大小来完成的。最初该表没有自动调整大小,因为它有额外的计算列。 代码的第一行查找最后一行数据,第二行显示表需要调整大小的范围。第三行将表格调整为新范围。 将sXXX和tXXX替换为您的工作表名称和表名。

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

HIH

答案 2 :(得分:0)

我遇到了同样的问题,这让我发疯。发现在几列中,我将公式拖得很远(如果第一列为空,它们是IF语句,则不返回任何内容),所以我没有看到它们。

因此,请删除表最后一行“下方”的所有公式。应该解决问题。