我有一个Excel电子表格,它在同一个标签上包含四个数据表。每个最后3列包含公式。
然后我有一个vba代码,它在SQL Server表中执行sql查找并返回一组列来更新四个表中的每一个。
对于其中三个表,粘贴数据并自动扩展表格,并将公式复制到表格的末尾。
但是,对于第一个表,数据会被粘贴,但表格不会展开,因此,公式不会添加到表格外的行中。
我已经搜索了高低,但没有快乐。我已经搜索了数据提取VBA代码而没有运气(代码完全匹配)并且表属性中没有任何乐趣。我还检查了“选择”菜单中的“自动格式化您输入”设置,但一切似乎都很好。
有没有人对我有任何想法?
谢谢,
大卫。
大家好,
很想知道是否有人有这方面的答案,但同时我捏造了代码,根据最后一个数据单元的行号自动调整表的大小。
谢谢,
大卫。
答案 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语句,则不返回任何内容),所以我没有看到它们。
因此,请删除表最后一行“下方”的所有公式。应该解决问题。