【问题标题】:Excel 2003 formula not calculating after changing it in VBAExcel 2003 公式在 VBA 中更改后未计算
【发布时间】:2013-04-24 18:09:06
【问题描述】:

我使用的是 Excel 2003 版本。

如果我使用 VBA 更改公式,例如:

Range("A1").Formula = "=Sheet2!B:B"

有时,公式会从 Sheet2 的单元格 B1 计算并显示正确的值。但是,有时它不会。相反,Sheet1 中的单元格 A1 中显示的仍然是“=Sheet2!B:B”,而它应该是 Sheet2 中单元格 B1 的值。另外,即使我将单元格 A1 的格式更改为“常规”,每次我通过 VBA 为其分配公式时,格式都会自动再次变为“文本”。

没有像 F9Shift-F9CTRL-ALT-SHIFT-F9 工作。

以前有人遇到过这个问题吗?有没有人找到解决方案?

【问题讨论】:

  • "=Sheet2!B:B"?你是说"=Sheet2!B1"
  • 您可以在分配公式 Range("A1").NumberFormat = "general" 后将范围显式转换为通用

标签: excel vba formula


【解决方案1】:

试试这个

Sub Sample()
    With Range("A1")
        .NumberFormat = "General"
        .Formula = "=Sheet2!B1"
    End With
End Sub

【讨论】:

    【解决方案2】:

    听起来该单元格的格式正在以某种方式更改为 Text(可能在您的代码的另一部分中)。

    尝试将这些行放在您的 .Formula = ... 行之前

    Sub test()
        Debug.Print "Format: " & Range("A1").NumberFormat
        Debug.Print "Value: " & Range("A1").Value
        Debug.Print "Formula: " & Range("A1").Formula
        Range("A1").Formula = "=Sheet2!B:B"
    End Sub
    

    然后检查即时窗格以查看发生了什么。

    【讨论】:

    • 格式:@值:公式:
    • 我没有任何改变格式的代码。只改变那个A1的公式。我想这本身就是excel。那样工作。以及如何在 vba 中使用公式,如果它不起作用,我不知道。
    • @Paya,@ 的格式表示它是文本,所以添加Formula = "=Sheet2!B:B" 将作为文本输入。我建议使用 Siddharth 的答案以确保它始终设置为 General 格式。
    • 是的,我按照他说的做了,这解决了问题,感谢大家帮助解决问题。
    猜你喜欢
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多