我有一个带有宏的Excel电子表格,它插入一个条件格式,如下所示:
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=UND($A3=""" & lastName & """; $B3=""" & firstName & """)"
如你所见,我使用了德语中的"AND“公式(即"UND"),很明显,当我在法语或英语版本的Excel上使用它时,这段代码不能立即工作。通常公式是自动本地化的,但是如何在运行时插入一个可以在所有版本上工作的公式呢?
发布于 2012-11-06 23:46:34
好的,谢谢你帮我解决这个问题,你帮我破解了这个问题。
仅仅使用英语确实是不可能的。在对公式进行运算时,可以使用英语。通过设置coding 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上打开文档时,将重新本地化或取消本地化。
发布于 2012-11-06 17:32:11
将公式(的一个简单版本)存储在工作簿的(隐藏)单元格中。
然后,当您打开工作簿时,该公式将由excel自动为用户翻译。
现在你只需要在你的脚本中剖析这个公式(找到开始的括号"(“,然后在过去的左边:
使用像这样的东西:
strLocalizedFormula = Mid(strYourFormula, 2, InStr(1, strYourFormula, "(") - 2)
其中strYourFormula
将是工作表中公式的副本。
我希望这能正常工作,因为我只使用英语环境。
读到这篇文章,我想你应该(只)能够使用http://vantedbits.blogspot.nl/2010/10/excel-vba-tip-translate-formulas.html中的单元格公式的英文版本。
发布于 2012-11-06 18:42:42
也许可以试试这个(未测试,因为我只有英文版本不完整)
使用Range.Formula
将您的国际版本的公式写入不合适的单元格。然后从Range.FormulaLocal
读回该字符串,并将该字符串写入FormatConditions
https://stackoverflow.com/questions/13247771
复制相似问题