在Excel Listobject / Table中通过VBA添加/修改/删除计算的列公式
如果我手动将公式input到Excel表(即ListObject)的列中,自动更正将此公式应用于整个列。
有没有办法通过VBA来控制这种行为,即我可以以某种方式修改/删除/添加此公式?
我知道我可以简单地改变ListObject.ListColumns(1).DataBodyRange
对象的公式 – 但是这将覆盖之前input的任何手动值 – 而在UI中更改公式将离开这个原封不动的…
感谢Doug和bonCodigos的评论/回答,我find了简单的答案:
ListObject.ListColumns("Column name").DataBodyRange.FormulaR1C1 = "new formula"
这将覆盖任何手动值(就像使用自动更正的正常行为一样)。
如果您能向我们展示您的工作表的屏幕截图,最好的办法是。 基于此,我们将阐明答案。
这是一般的假设。 您有一个列表对象将一些数据转储到列中,并手动交互该列中的其他单元格。
您可以先手动尝试以下内容,看看它是否适用于您。 手工代码仍然被代码级取代,然后在代码级执行此操作。 🙂
这里的主要操作是停止自动更正
转到 – >工具菜单 – >单击自动更正选项 – >在自动更正选项卡 – >
1- 防止所有自动更正
键入时清除“ Replace Text as you type
”checkbox
2- 防止具体更正
清除该选项的相应checkbox。 我相信你对后一种特定的数据范围更感兴趣,你只需要通过listobject转储数据。
现在这里是在代码级别禁用此function的代码。
使用Excel表(ListObjects)时,有两个自动更正选项需要考虑:您可以详细阅读这两个选项。
* Apply new rows and columns in table (VBA AutoCorrect.AutoExpandListRange Property) * Fill formulas in tables to create calculated columns (VBA AutoCorrect.AutoFillFormulasInLists Property)
你可能想在我们的listobject的顶部使用的代码是,
Application.AutoCorrect.AutoFillFormulasInLists = False
并完全同意,如果Application.AutoCorrect. AutoFillFormulasInLists
它将是非常有用的Application.AutoCorrect. AutoFillFormulasInLists
Application.AutoCorrect. AutoFillFormulasInLists
在ListObject级别的表格基础上进行控制。 所以这里是一个解决方法。
所以一种方法是每次清理你的表格数据。 而当你清除数据,你可以确保TABLE TO FORGET论坛和格式。 因此,在删除表格内容之前,将清除数据主体范围的内容。
Sub forgetMe() With Sheet1.ListObjects("myTable") If Not .DataBodyRange Is Nothing Then .DataBodyRange.ClearContents .DataBodyRange.Delete End If End With End Sub
当你input数据时,从自动填充开始。