首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Excel宏,在运行时插入国际有效公式

Excel宏,在运行时插入国际有效公式
EN

Stack Overflow用户
提问于 2012-11-06 17:10:42
回答 6查看 10.2K关注 0票数 25

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

代码语言:javascript
复制
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=UND($A3=""" & lastName & """; $B3=""" & firstName & """)"

如你所见,我使用了德语中的"AND“公式(即"UND"),很明显,当我在法语或英语版本的Excel上使用它时,这段代码不能立即工作。通常公式是自动本地化的,但是如何在运行时插入一个可以在所有版本上工作的公式呢?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-11-06 23:46:34

好的,谢谢你帮我解决这个问题,你帮我破解了这个问题。

仅仅使用英语确实是不可能的。在对公式进行运算时,可以使用英语。通过设置coding Range("A1").formula="AND(TRUE)",但这不适用于FormatConditions

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

代码语言:javascript
复制
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上打开文档时,将重新本地化或取消本地化。

票数 16
EN

Stack Overflow用户

发布于 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中的单元格公式的英文版本。

票数 5
EN

Stack Overflow用户

发布于 2012-11-06 18:42:42

也许可以试试这个(未测试,因为我只有英文版本不完整)

使用Range.Formula将您的国际版本的公式写入不合适的单元格。然后从Range.FormulaLocal读回该字符串,并将该字符串写入FormatConditions

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13247771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档