如果我手动输入一个公式到Excel表格(即的ListObject)的柱,自动更正应用该公式的整列。
有什么办法来控制通过VBA的这一行为,即我可以采用某种修改/删除/添加这个公式?
我知道我可以简单地改变公式ListObject.ListColumns(1).DataBodyRange
对象-但这样会覆盖之前的任何手动输入的值-而在UI改变公式将离开这个不变...
如果我手动输入一个公式到Excel表格(即的ListObject)的柱,自动更正应用该公式的整列。
有什么办法来控制通过VBA的这一行为,即我可以采用某种修改/删除/添加这个公式?
我知道我可以简单地改变公式ListObject.ListColumns(1).DataBodyRange
对象-但这样会覆盖之前的任何手动输入的值-而在UI改变公式将离开这个不变...
感谢Doug的和bonCodigos的意见/答案,我找到了答案很简单:
ListObject.ListColumns("Column name").DataBodyRange.FormulaR1C1 = "new formula"
这将覆盖任何手动值(就像使用自动更正的正常行为)。
最好的是,如果你能告诉我们你的表的屏幕截图。 在此基础上,我们会阐述的答案。
这是与一般的假设。 你有一个列表对象转储一些数据在列的单元格的列和休息手动交互。
你可以尝试下面的手动第一,看看它是否适合你。 还是手动一个是由代码级超车,然后你在代码层面做到这一点。 :)
这里的主要作用是停止自动更正
进入 - >工具菜单 - >点击自动更正选项 - >在自动更正选项卡 - >
1- 要阻止所有自动更正
清除复选框Replace Text as you type
2- 为了防止SPECIFIC更正
清除该选项对应的复选框。 我相信你更感兴趣的是后者 - 你刚刚通过的ListObject转储特定的数据范围。
现在,这里是在代码级别禁用此功能的代码。
当与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
在的ListObject水平由表基础上的表控制。 因此,这里是一个解决办法。
因此,一种方法是每次清除表中的数据。 当你明确的数据可以确保为表忘记forumulae和格式。 因此,将删除表中的内容之前清除数据体范围的内容。
Sub forgetMe()
With Sheet1.ListObjects("myTable")
If Not .DataBodyRange Is Nothing Then
.DataBodyRange.ClearContents
.DataBodyRange.Delete
End If
End With
End Sub
当你输入数据,启动具有自动关闭的东西。