EXCEL宏,在运行时插入国际有效公式。

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

我有一个带有宏的Excel电子表格,它插入了一个条件格式,如下所示:

Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=UND($A3=""" & lastName & """; $B3=""" & firstName & """)"

正如你所看到的,我用了德语的公式来表示“和”。显然,这段代码在我将其用于法语或英文版Excel时就无法工作。通常公式是自动本地化的,但是如何在运行时插入一个将在所有版本上工作的公式?

提问于
用户回答回答于

仅仅使用英语是不可能的。在对公式进行操作时可以使用英语,例如通过设置编码Range("A1").formula="AND(TRUE)",但这并不适用于FormatConditions.

我的解决方案是一个函数,该函数将公式临时写入单元格,然后通过FormulaLocal属性,并返回本地化公式,如下所示:

Function GetLocalizedFormula(formula As String)
' returns the English formula from the parameter in the local format
  Dim temporary As String
  temporary = Range("A1").formula
  Range("A1").formula = formula
  Dim result As String
  result = Range("A1").FormulaLocal
  Range("A1").formula = temporary
  GetLocalizedFormula = result
End Function

返回的公式可用于FormatConditions,当稍后在Excel的不同语言版本上打开文档时,该文档将被重新本地化或不本地化。

用户回答回答于

将公式存储在工作簿中的(隐藏)单元格中。

然后,当打开工作簿时,此公式将由Excel自动为用户翻译。

现在,只需在脚本中剖析这个公式(找到开头的括号“(”),

使用类似于:

strLocalizedFormula = Mid(strYourFormula, 2, InStr(1, strYourFormula, "(") - 2)

何地strYourFormula将是来自您工作表中公式的副本。

我希望这是可行的,因为我只使用英语环境。

扫码关注云+社区