【问题标题】:Problem with using VBA to insert formula in Excel sheet使用 VBA 在 Excel 工作表中插入公式的问题
【发布时间】:2021-07-30 06:47:34
【问题描述】:

我最近在使用 VBA 将公式插入 Excel 工作表时遇到了问题。在相关代码下方;

Calculatie_cell.Offset(n, 5) = "=SOM(H" & (n + 3 - 1) & ":H" & (n + 3 - Onderdelen_aantal) & ")"
Calculatie_cell.Offset(n, 8) = "=SOM(K" & (n + 3 - 1) & ":K" & (n + 3 - Onderdelen_aantal) & ")"

对于它触发的第一次迭代,预期的输出是;

=SOM(H4:H7)
=SOM(K4:K7)

我收到的输出是;

=@SOM(H4:H7)
=@SOM(K4:K7)

这个输出产生一个#NAME?错误。按 F2,在单元格上输入(就像手动输入一样),会出现错误,指出旧版本的 Excel 不支持此公式,并可选择将其更正为预期输出。如果我接受它,它会起作用。

我找不到为什么 Excel 认为它需要 @ 并且下面的代码没有从公式中过滤 @(但它确实从带有 @ 的随机文本中过滤掉它)

Calculatie_cell.Offset(n, 5) = Replace(Calculatie_cell.Offset(n, 5), "@", "")
Calculatie_cell.Offset(n, 8) = Replace(Calculatie_cell.Offset(n, 8), "@", "")

有没有人建议我如何摆脱@,或另一种使公式起作用的方法?提前致谢!

相关说明;我在荷兰语中使用 Excel 2016,意思是“SOM”是拼写“SUM”的正确方式

【问题讨论】:

  • 尝试在代码中加入“SUM”——我似乎记得有一个类似的问题,有人指出 vba 需要英语的函数......

标签: excel vba excel-formula


【解决方案1】:

首先,无论您的 Office 安装语言是什么,VBA 都会要求输入英文。
因此,请将您的代码中的 SOM 替换为 SUM
它应该在工作簿中显示为SOM,而不是在代码中。

其次,使用oCell = "=SOME_FORMULA" 通常不会产生预期的结果。
相反,应该使用oCell.Formula2 = "=SOME_FORMULA"
这就是公式中出现@ 的原因。

有关信息,请参阅this 文章。


最后,你的代码应该是

Calculatie_cell.Offset(n, 5).Formula2 = "=SUM(H" & (n + 3 - 1) & ":H" & (n + 3 - Onderdelen_aantal) & ")"
Calculatie_cell.Offset(n, 8).Formula2 = "=SUM(K" & (n + 3 - 1) & ":K" & (n + 3 - Onderdelen_aantal) & ")"

【讨论】:

  • 您好,感谢您的回答!正如用户 Solar Mike 所提到的,问题确实是使用“SOM”而不是“SUM”。虽然代码在没有“.Formula2”的情况下确实可以工作,但我会添加它以防止将来出现问题,谢谢!
  • 这是一个Excel如何评估公式的问题,尤其是在数组中。 Formula2 指的是一种更现代的计算公式的方法,多年来一直是标准。顺便说一句,第一个问题写得很好,恭喜!
  • 谢谢!我知道与不提供适当信息的人一起解决问题的困难。并感谢有关公式 2 的附加信息。正如我的简历中所述,我每天使用 VBA 都会学到一些新东西!
【解决方案2】:

用户@Solar Mike 是对的。

尽管 Excel 希望代码是“SOM”(荷兰语拼写),但在 VBA 中它需要是 SUM(英语拼写)。它会自动翻译并在蝙蝠中正常工作。感谢您的帮助!

如果您将其发布为答案,我将接受它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    相关资源
    最近更新 更多