我有一个VBA代码可以动态填充条件格式。问题是我的代码在英语版本的Excel上工作正常,但是如果我发送给法语excel版本的人,则会给他们一个错误。 我意识到问题是我在vba代码中用英文逗号输入了逗号“,”,但是在法文版本中却使用了“;”。分隔符起作用。
如何解决此问题,以便我的代码可在任何excel版本上使用?我无法根据每个用户的本地版本为他们创建一个excel。
要弄清楚事情,以便您有所帮助:
这是导致我出现问题的代码部分
sFormula是包含字符串的字符串:
sFormula = AND(OR($ AP14 =“”,$ AR14 =“”),NOT($ C14 =“”))
Range(sMyRange).FormatConditions.Add Type:=xlExpression, Formula1:=sFormula
在英语版本的Excel中,一切正常
在法语版本中,我必须在VBA代码中将sFormula中的“,”替换为“;”。使其正常工作,否则在执行宏代码时出现运行时错误
如果我在代码中替换了之前的sFormula,则将其替换为下面的sFormula(只需将;替换为;)就可以在法语版本中正常工作
sFormula = AND(OR($ AP14 =“”; $ AR14 =“”); NOT($ C14 =“”))
预先感谢您的帮助。
答案 0 :(得分:0)
我认为您可以在安装Excel时通过判断语言来编写代码。
[@class....]
答案 1 :(得分:0)
基于@Scott Craner的评论,我使用以下函数解决了我的问题,再次感谢Scott Craner和@ Dy.Lee的帮助。
这是我的职能,以便它可以帮助其他人:
Public Function GetLocalFormula(sformula As String, Optional sCell As String = "A1") As String
'This function will Convert and English formula to localized formula
'SCell is the temporary cell that we will use to convert the Formula, by default it's A1
Dim temporary As String
Dim result As String
With Range(sCell)
temporary = .formula
.formula = sformula
result = .FormulaLocal
.formula = temporary
GetLocalFormula = result
End With 'With Range(sCell)
End Function