【问题标题】:Issues with macros and formulas in ExcelExcel 中的宏和公式问题
【发布时间】:2017-04-12 16:25:55
【问题描述】:

从 Excel 中的宏插入公式时遇到问题。我设法在公式运行良好的另一个单元格上插入完全相同的值。它总是说#¿NAME?除非我按 F2 并回车。我检查并重新检查了计算模式,不是手动,设置为自动,但这个公式根本不起作用。 SendKeys "{f2}" SendKeys "{enter}" 方法似乎有效,但它很可怕而且不是“无缝”的。

我尝试了不同的公式(从简单到复杂),每次尝试公式中的任何函数都不起作用。我插入工作公式的唯一方法就是使用数字(例如“= 1 + 1”之类的东西),但是当使用任何函数时。 "=SUM(A1:A5)" 只是不起作用(除非按 F2 和 Enter)。

我不明白为什么插入与公式完全相同的“文本”是行不通的。 我该怎么做才能解决这个问题??? 提前感谢

【问题讨论】:

  • 展示你的代码总是最好的。
  • 这是我的代码: Cells(LastRow + 1, 3).Formula = "=SI.ERROR(BUSCARV(" & "B" & laststr & " , Datos!A2:E52, 3) , """")" 正如我所说,它将文本完美地插入所选单元格,但由于某种原因,Excel 不会“执行”该单元格内的代码,除非按 F2 和 Enter
  • 您对放置公式的单元格应用了什么格式,文本?
  • 认为您需要使用 FormulaLocal 来插入依赖于语言环境的公式。
  • FWIW 使用 FormulaLocal 使您的 代码 依赖于区域设置,这意味着如果您的任何用户在另一台配置为另一个区域设置的机器上运行宏,他们 将得到#NAME! 错误。为避免这种情况,请使用.Formula 并在 VBA 中使用英文函数名。这样一来,法国客户将看到 =SOMME,英语客户将看到 =SUM,而西班牙客户将看到 SUM 公式的西班牙语。 =)

标签: vba excel


【解决方案1】:

感谢您的回复!!!

使用 FormulaLocal 效果很好!!!我所做的是“翻译”函数名称并完成!

Cells(LastRow + 1, 3).Formula = "=IFERROR(VLOOKUP(" & "B" & laststr & " , Datos!A2:E52, 3), """")"

【讨论】:

    【解决方案2】:

    问题的正确解决方法请参考the answer by Monster

    我必须把这个答案留在这里,直到它被“不接受”,然后我才能删除它。


    要输入与语言环境相关的公式,您需要使用FormulaLocal

    Cells(LastRow + 1, 3).FormulaLocal = "=SI.ERROR(BUSCARV(B" & laststr & " , Datos!A2:E52, 3), """")"
    

    【讨论】:

    • 这感觉像是一个可怕的想法(代码不再是可移植的),但 +1 用于“修复”眼前的问题。
    • @Mat'sMug - 好点 - 我会尝试让 OP 不接受答案,以便我可以删除它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    相关资源
    最近更新 更多