首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使使用Application.AutoCorrect.AutoFillFormulasInLists = False的表自动填充公式

即使使用Application.AutoCorrect.AutoFillFormulasInLists = False的表自动填充公式
EN

Stack Overflow用户
提问于 2021-12-09 23:55:06
回答 1查看 148关注 0票数 1

不知道怎么回事。在将范围的公式分配给数组之前,我已经设置了Application.AutoCorrect.AutoFillFormulasInLists = False。期望公式的值将唯一地设置为数组中的值。相反,它们会立即自动填充到数组中的第一个值。

我已经确保数组的格式是正确的,并且只要我不把"=“放在字符串前面,就会显示正确的值。只有当字符串是有效的Excel公式时,Excel才会更改表中的值。

过去也有人说过Application.AutoCorrect.AutoFillFormulasInLists = False应该修复这个问题,但我认为Office365是不同的。另外,Excel还会自动将行添加到表中,即使关闭了该选项(尽管我确实希望这样做)。也许宏比excel本身具有不同的设置?有什么建议吗?

编辑:添加一些示例代码,为我生成相同的结果。

代码语言:javascript
复制
Public Sub Test()
    
    Dim testTable As ListObject
    
    If Sheet1.ListObjects.Count = 0 Then
        Set testTable = Sheet1.ListObjects.Add(xlSrcRange, Sheet1.Range(Sheet1.Cells(1, 1), Sheet1.Cells(3, 1)))
    Else
        Set testTable = Sheet1.ListObjects(1)
    End If
        
    Dim dataArray As Variant
    dataArray = Application.Transpose(Array("=""Formula 1""", "=""Formula 2""", "=""Formula 3"""))
        
    Application.AutoCorrect.AutoFillFormulasInLists = False
    testTable.DataBodyRange.Formula = dataArray
    
End Sub
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-10 01:18:54

老实说,即使在Excel 365之前,我也不确定这是可能的,并且会欢迎相反的证据(我不能再测试)。

若干备选方案,每一种方案都可能有问题:

  • 将表转换为范围(将其撤消为表),编写公式并重新转换。如果您的公式包括结构化的references.
  • Use .FormulaArray,如果您的公式不以数组公式的形式中断,并且您不介意公式栏中的封闭{},则这是行不通的。
  • 使用.Formula,但是用“块”编写公式--即将数组分割成几个较小的数组并连续写入它们。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70298198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档