我有一个excel工作簿,每个工作表中有5个工作表,有一个包含值的表。 然后我根据用户选择(使用下拉列表)删除一些行(使用VBA)。 在我的VBA代码删除所有不必要的行后,Excel表明我有"不一致的列公式"我想在用户看到之前用VBA解决这个问题。
有没有办法用VBA做到这一点?
我现在一整天都在搜索谷歌,但仍然没有找到任何有用的东西,我脑子里唯一想要的就是在其中包含公式的所有行和列中进行迭代,检查是否公式包含一个错误,肯定会超级慢......
注意:如果这被视为Find inconsistent formulas in Excel through VBA的重复,我很抱歉,但唯一的答案是没有使用表作为数据范围
答案 0 :(得分:1)
如果您尝试重置Table
中的公式,可以使用DataBodyRange.Formula
属性重置整个列的公式。这解决了获取Inconsistent Calculated Column Formula
的一种方法。
错误示例是通过设置列的公式,更改一个单元格,然后告知Excel在编辑后不更改公式列来获得的。
要将其还原为列公式(并删除错误),您可以运行更改DataBodyRange
公式的VBA。
要更改的代码
Sub ResetTableColumnFormula()
Dim listObj As ListObject
For Each listObj In ActiveSheet.ListObjects
listObj.ListColumns("b").DataBodyRange.Formula = "=[@a]"
Next
End Sub
请注意,通过迭代所有ListObjects
而不是使用表的名称来获取引用,我有点懒惰。这是有效的,因为Table
上只有一个Worksheet
。
该代码运行后的公式:
请注意,此答案与answer here.
非常相似