内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
我有一个带有宏的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
将是来自您工作表中公式的副本。
我希望这是可行的,因为我只使用英语环境。